Почему NULL сделали как ((void *) 0), а не просто 0 - C (СИ)

Формулировка задачи:

Почему NULL сделали как ((void *)0), а не просто 0 ??

Код к задаче: «Почему NULL сделали как ((void *) 0), а не просто 0 - C (СИ)»

textual
#include <stdio.h>
 
#define nullproc(arg) _Generic((arg), int: nullprocint, void*: nullprocptr)(arg)
 
void nullprocint(int arg) {
    printf("INT: %d\n", arg);
}
 
void nullprocptr(void *ptr) {
    printf("PTR: %p\n", ptr);
}
 
int main(void) {
    nullproc(0);
    nullproc(NULL);
 
    return 0;
}

14   голосов, оценка 4.143 из 5


СОХРАНИТЬ ССЫЛКУ