Reads from the null special file always return end of file, whereas reads from zero always return \0 characters.
null and zero are typically created by:
mknod -m 666 /dev/null c 1 3
mknod -m 666 /dev/zero c 1 5
chown root:mem /dev/null /dev/zero