int x;
這是聲明還是定義?變量聲明和定義
我寫了下面的代碼,
#include <stdio.h>
int main(void)
{
int x;
printf("%p",&x);
return 0;
}
它打印一些地址。因此,內存分配,int x;
不能只是一個聲明。那它是一個定義嗎?
int x;
這是聲明還是定義?變量聲明和定義
我寫了下面的代碼,
#include <stdio.h>
int main(void)
{
int x;
printf("%p",&x);
return 0;
}
它打印一些地址。因此,內存分配,int x;
不能只是一個聲明。那它是一個定義嗎?
6.7聲明
...
5一個聲明指定一組標識符的解釋和屬性。 A 定義的標識符是該標識符的聲明:
- 對於一個對象,導致爲該對象保留存儲空間;
- 對於功能,包括功能體; 101)
- 對於枚舉常量或typedef名稱,是 標識符的(唯一)聲明。
在這種情況下,int x;
是一個定義(或定義聲明)。
int x
;是一個定義。 extern int x;
只是一個聲明。 extern int x = 3;
也是一個定義。 HTH
由於他只是接受變量的地址,我不明白爲什麼這是UB。 – Job 2010-10-25 08:01:08
@工作,哦,對不起,沒有看到 – 2010-10-25 08:02:12
@Armen Tsirunyan我試圖說明編譯器爲int x分配內存; – Parikshita 2010-10-25 08:02:23
這非常含糊。我沒有很好地回答這個問題。 – krico 2010-10-25 07:57:52
此外,此代碼可能會給你一個段錯誤取決於你在哪個平臺上運行它。 – krico 2010-10-25 07:58:28
@krico:問題是確切的。 – 2010-10-25 07:59:28