我從一本C++書中讀到,在ANSI C中,const值是全局的嗎?但如果我在main()
中聲明const變量,那麼它將在本地範圍內,那麼我們可以怎麼說const是全局的?在ANSI C中,const值是全局的嗎?
回答
C中沒有全局詞法範圍,但有一個文件範圍。對象的const
限定不影響其範圍。
#include <stdio.h>
int a = 0; // file scope
const int b = 0; // file scope
int main(void)
{
int x; // block scope
const int y; // block scope
}
表示書是錯的@ouah ???正如你所說的int a = 0;是文件作用域我不認爲如此bcoz我們可以在不同的文件中使用extern int a;包括這個文件..不是嗎? – user2487315 2015-01-04 13:49:08
可能值得注意的是,除了'a'和'b'變量外都有_external linkage_,通常被稱爲「全局變量」。只有'static'關鍵字可以將鏈接改爲內部鏈接(但只對於在任何函數外部聲明的變量,這些聲明內部沒有鏈接),'const'不會影響這方面的任何內容(以及在函數內部聲明的變量)。 – 2015-01-04 13:50:57
@GrzegorzSzpetkowski意思是錯誤的「在ANSI C中,const值是全局的?」 bcoz它可能是塊範圍也..不是嗎? – user2487315 2015-01-04 13:54:47
- 1. 全局值到類const
- 2. ansi c全局可訪問的回調
- 3. 在ANSI C中是long double有用嗎?
- 4. C中共享的全局const變量,在mexFunction()中定義
- 5. Objective-C中的全局C字符串const屬性
- 6. C自動變量中是全局變量嗎?
- 7. 對於ANSI C這是真的嗎?
- 8. 聲明一個全局作用域變量const在C++中
- 9. $ _GET函數中的全局作用域不是全局的嗎?
- 10. 自賦值在ANSI C
- 11. 是一個const HANDLE真的是const嗎?
- 12. 這是ES6中的全局變量嗎?
- 13. 如何在ansi-c中使用指向全局結構的指針?
- 14. C中是否存在全局斷言?
- 15. 爲什麼MFC C++ CString(const char *)完全改變const char *值?
- 16. 如何在ANSI C中定義NaN值?
- 17. 如何在C(不是C++)的結構中保存const值?
- 18. 「ANSI C」或「ANSI C++」今天仍然有意義嗎?
- 19. 聲明const全局變量時需要靜態嗎?
- 20. 在C中返回const const成員爲非const:好還是壞?
- 21. 枚舉成員可以是ANSI-C中數組的大小嗎?
- 22. 傳遞值時不是「const」冗餘嗎?
- 23. 在C++ 11/14中線程安全是否意味着const?
- 24. 這是[0]在C++中安全嗎?
- 25. 我的變量是全局的嗎?
- 26. 全局變量修改的const成員函數,其中通過全局函數
- 27. 在ANSI C++
- 28. getopt()在ANSI C
- 29. 如何在全局範圍的nodejs中定義const?
- 30. nodejs'util'有時候是全局的嗎?
請問你能否確定這本書的內容,並且更準確地說明它的內容和內容?另外ANSI C通常不是一個非常精確的術語。 ANSI遵循ISO C標準,所以至少有三種不同的版本,C89,C99和C11。 – 2015-01-04 14:06:15
作者可能試圖說沒有存儲類說明符的文件範圍'const'變量在C中具有外部鏈接,而它們默認爲C++中的內部鏈接。在兩種語言中,塊範圍變量默認都沒有鏈接。 – mafso 2015-01-04 15:21:33
c中的每個段都有隻讀區.Const將指示編譯器將其放入只讀區。 – Ankur 2015-01-04 17:59:57