[英]void pointer and its assignment to the void datatype
問題是使用void數據類型並為void變量賦值。
#include<stdio.h>
#include<stdlib.h>
int main()
{
void *pVoid;
pVoid = (void*)0;
printf("%lu",sizeof(pVoid));
return 0;
}
什么在第二行分配給pVoid。
直接從標准庫wiki復制:
在stddef.h,locale.h,stdio.h,stdlib.h,string.h,time.h中定義。
在標准C中,這可以實現為:
#if !defined(NULL) #define NULL ((void*)0) #endif
所以pVoid
被准確地分配了它在第二行上用NULL
分配的內容。
編輯 :正如@Jens Gustedt在評論中所提到的,值得注意的是, NULL
這種實現並不是唯一的,並且可以與平台相關。
pVoid
被賦值為NULL
。 這是因為表達式(void*)0
被定義為空指針常量 。
C標准的第6.3.2.3p3節規定:
值為0的整型常量表達式或類型為
void *
的表達式稱為空指針常量 。 如果將空指針常量轉換為指針類型,則保證將結果指針(稱為空指針)與指向任何對象或函數的指針進行比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.