Question: Which choice is a reason to specify the type of a pointer instead of using `void *`, which works as a pointer ro any type?

  1. The compiler needs the dara type to make sure that the pointer is not going to be used on illegal non-pointable types such as functions, labels, pointers, and reference.
  2. `void *` does not work for any type. The language does not allow assigning anything other than `void` to a pointer to `void *`.
  3. The compiler needs the data type to know how much memory to allocate for the pointer, because different data types require different pointer lengths.
  4. Yes, it causes a compiler error because one field is defined as having a size of 0.

Answer: The correct answer of the above question is Option C:The compiler needs the data type to know how much memory to allocate for the pointer, because different data types require different pointer lengths.