搜尋

首頁  >  問答  >  主體

C++/C语言中static const 和 const的区别

代码如下 :

static const int NUM = 1000;
const int ARRAY_LENGTH = 10;
  1. 想知道加不加 static 有什么区别吗 ?

  2. 如果我想将这个常量的使用范围限制在只在该文件中使用, 除了放在类中, 还有什么别的办法吗?

PHPzPHPz2808 天前573

全部回覆(3)我來回復

  • 黄舟

    黄舟2017-04-17 14:33:13

    一個全域變數如果被static修飾,那麼其只在本文件中可見,不能被其他文件使用

    一口氣回答你的兩個問題~

    回覆
    0
  • 怪我咯

    怪我咯2017-04-17 14:33:13

    1. static 全域變量,對檔案來說是 private 的,不加的話,其他檔案也可以引用

    2. 加上 static 就可以了

    回覆
    0
  • 怪我咯

    怪我咯2017-04-17 14:33:13

    1.寫在函數外就是在當前原始檔(確切地說是編譯產生的.o目標文件,因為可見性其實是連結器的概念)可見,是內部連結。不寫的話,就是外部鏈接,是可以在別的原始檔裡用extern引用的這個變數的。
    a.cpp

    static const int A = 0;
    const int B = 0;
    

    b.cpp

    extern const int A;  // 会发生链接错误
    extern const int B;  // 正确,多数是写在a.h里然后include
    

    寫在函數裡則是說明是靜態變量,多次呼叫這個函數,都共用同一個內存,而不是棧裡產生新的。

    void foo()
    {
        static const int A = 0;    // 多次调用foo,&A不变。
        const int B = 0;           // 多次调用foo,&B不固定。
    }
    

    2.有方法,C++推薦用匿名空間取代static,讓變數在本文件內可見。

    namespace {
        const int MAX_BUFFER_SIZE=200;
    }
    

    回覆
    0
  • 取消回覆