2010-11-24 1941 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)和存储在寄存器上的变量标识符不可修改

相关问题