我有一些問題,當我正在閱讀和編寫代碼時出現..
我已經得到另一種方法,但這個問題仍然在我的腦海裏,我沒有找到任何好的答案,讓我們看看: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