我有一些问题,当我正在阅读和编写代码时出现..
我已经得到另一种方法,但这个问题仍然在我的脑海里,我没有找到任何好的答案,让我们看看:NULL实现和指针分配
我可以分配一个指针变量在便携方式,甚至失去 信息?看到的情况,我有一个函数,可以返回NULL,如果一个错误或一个字符,假设NULL是全0,字符 将是nul,这是正确的?
void * function_returning_null_or_char();
一个int变量是否设想保存一个指针? (我在某处读过)..
我的NULL实现是
#define NULL (void *) 0
。如果是#define NULL 0
,会更好吗?所以 它可以分配给变量和指针,如char或int *。 (请参阅问题1)当我将一个指针指向NULL时,当我将它转换为short或char 或另一个类型时,值将为0?或者值将会是 特殊值的NULL,以适合该类型?
我认为,所有问题都在恢复: 编译器是足够聪明,当它被强制转换为一个变量在0 NULL指针转换?
示例代码:
int *p = NULL;
char c = (char) p; // This works, I dont know why, and char is equal to '/0';
char c = NULL; //This works because the compiler is smart to convert NULL to '/0' event stddef.h defining NULL as (void *)0;
char c = (char) function_returning_null_or_char(); //if this function return NULL whats the value of c? If NULL have a special value, c will have a special value too, or it will be 0?
你为什么重新定义NULL? –
你只是过于复杂的东西... – JoeC
我没有重新定义任何东西,这是在stddef.h – drigoSkalWalker