簡體   English   中英

void指針及其對void數據類型的賦值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM