2010-11-24 607 views

回答

57

const部分確實適用於變量,而不是結構本身。

例如@Andreas正確說:

const struct { 
    int x; 
    int y; 
} foo = {10, 20}; 
foo.x = 5; //Error 

但重要的是,可變foo是恆定的,而不是struct定義本身。 你同樣可以寫爲:

struct apoint { 
    int x; 
    int y; 
}; 

const struct apoint foo = {10, 20}; 
foo.x = 5; // Error 

struct apoint bar = {10, 20}; 
bar.x = 5; // Okay 
17

這意味着struct是恆定的,即在初始化後您不能編輯它的字段。

const struct { 
    int x; 
    int y; 
} foo = {10, 20}; 
foo.x = 5; //Error 

編輯:格雷厄姆正確地指出的常量性是可變的屬性,在這種情況下foo,而不是結構定義:

struct Foo { 
    int x; 
    int y; 
}; 
const struct Foo foo = {10, 20}; 
foo.x = 5; //Error 
struct Foo baz = {10, 20}; 
baz.x = 5; //Ok 
+5

乾杯。我能爲我的觀察獲得+1嗎? :D – GrahamS 2010-11-24 13:29:58

+0

當然,在這裏你去;) – 2010-11-24 13:39:52

-1

我認爲,一個const結構不能被修改。換句話說,被聲明爲const的struct的所有字段都是不可修改的。

+4

這到底是什麼意思是「我相信」?如果你不合格,不要回答。留下猜測的評論,不是嗎? – nbro 2016-03-19 15:42:50

0

常量意味着你不能編輯的聲明和初始化後的結構領域,你可以檢索數據形成結構

0

「常量」作爲每個詞不斷本身就說明是指不可修改。這可以應用於任何數據類型的變量。 struct是用戶定義的數據類型,它也適用於任何結構的變量。初始化後,const變量的值不能被修改。

-1

你不能修改常量結構,第一個結構是一個簡單的數據類型,因此,當一個const關鍵字來時,編譯器會舉行一個寄存器的存儲空間,而比臨時存儲(比如RAM)和存儲在寄存器上的變量標識符不可修改

相關問題