7
A
回答
6
它在程序中出現在哪裏?
在大多數情況下,它既是一種聲明,也是一種定義。
OTOH,extern int a;
只是一個聲明。
17
A 聲明描述了一個對象,而定義請求創建一個對象。所有的定義也是聲明,但相反是不正確的。
在int a;
的情況下,它是什麼取決於在其被放置在源代碼:
- 在函數中,
int a;
是一個定義 - 它要求一個int
變量的創建具有自動存儲期限(當然也包括聲明); - 在文件範圍內,C和C++的答案是不同的。在C中,
int a;
是一個暫定義(其中可以有多個,只要類型和鏈接都一致);在C++中,它是具有外部鏈接的普通定義。 - 在
struct
或union
說明符中,int a;
是成員的聲明。
0
考慮:
int a;
這是一個定義以及聲明。
請看下面的例子...
int i;
printf("%d", i);
一些垃圾值將被打印出來。這顯然意味着它有一個內存位置。
如果你想只聲明一個變量,而不是定義它,那麼去「extern」關鍵字。
因此extern int b;
只是一個聲明而不是一個定義。
實施例:
extern int var;
int main(void)
{
var = 10;
return 0;
}
因此,上述程序將拋出異常爲「VAR」沒有任何地方所定義。
相關問題
- 1. 在C++中聲明C ==定義?
- 2. C++雙聲明/定義?
- 3. C#int&int32聲明
- 4. 如何在c中聲明和定義objective-c中的函數?
- 5. C,C++,C#,Java和Python中的聲明,定義,初始化
- 6. extern聲明和定義用C
- 7. C++接口聲明/定義和用法
- 8. 自定義C++聲明宏
- 9. C++命名空間聲明和定義
- 10. '(int)a','a as int'和C#中的Convert.ToInt32(a)之間的區別
- 11. 在類定義中聲明的C++宏?
- 12. C++ - 向前聲明和別名(使用或類型定義)
- 13. C++中的數組聲明,大小定義和破壞
- 14. C#UpdateListBox方法聲明中定義
- 15. 聲明vs定義成員變量C++
- 16. C++中較少的CPU使用率:聲明爲unsigned int或不?
- 17. 聲明和定義
- 18. 聲明或不聲明在目標c
- 19. 聲明與定義的C++存儲類和限定符規則
- 20. 什麼應該是C++中int main的參數/聲明?
- 21. 正向聲明在C++中定義的枚舉C
- 22. 在C++中單獨枚舉聲明和定義11
- 23. 是int a [10] = {0,1,2,3,4,5,6,7,8,9};與int * a = {0,1,2,3,4,5,6,7,8,9}在C++中一樣嗎?
- 24. 調試C程序(int聲明)
- 25. C++ 0x標準如何定義C++ Auto多重聲明?
- 26. C++中的函數聲明
- 27. C - 聲明中的未聲明變量
- 28. C定義和字符指針聲明之間的錯誤
- 29. C中的聲明'(int *)ptr [N]'是什麼意思?
- 30. C++在聲明和定義之間拆分默認參數值
在文件範圍內,'int a;'是一個聲明和一個試探性的定義。 – caf 2010-12-18 02:05:17
@caf:你應該將其作爲答案發布。這是大多數人沒有得到的棘手案例。 – 2010-12-18 02:08:57
默認是函數和類extern嗎? – lex 2010-12-18 02:09:15