'const struct'与'struct'有什么不同?

时间:2010-11-24 12:44:27

标签: c syntax

const struct是什么意思?它与struct不同吗?

6 个答案:

答案 0 :(得分:71)

const部分确实适用于变量,而不是结构本身。

e.g。 @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

答案 1 :(得分:21)

这意味着struct是常量,即在初始化之后你无法编辑它的字段。

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

编辑: GrahamS正确指出constness是变量的属性,在本例中为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

答案 2 :(得分:0)

我认为不能修改const结构。换句话说,声明为const的结构的所有字段都是不可修改的。

答案 3 :(得分:0)

Const意味着您在声明和初始化之后无法编辑结构的字段,并且您可以从结构中检索数据

答案 4 :(得分:0)

'const'作为单词常量本身表示意味着不可修改。这可以应用于任何数据类型的变量。 struct是用户定义的数据类型,它也适用于任何结构的变量。初始化后,不能修改const变量的值。

答案 5 :(得分:-2)

你不能修改一个常量结构,第一个结构是一个简单的数据类型,所以当一个const关键字出现时,编译器将在寄存器而不是临时存储(如ram)和变量标识符上保存一个内存空间存储在寄存器中无法修改