如何为属于结构的常量变量赋值?

时间:2014-12-15 16:39:18

标签: c

struct temp{
const int i;
};

如何在main()函数中初始化变量'i'?

2 个答案:

答案 0 :(得分:5)

您不能任何内容分配给常量对象。常量对象只能在声明点初始化,如

struct temp t = { 5 };

即。你只有一次机会。如果你错过了初始化一个常量对象的机会,那么你运气不好 - 该对象将永远未被初始化。

由于这个原因,在一般非常量的struct对象中创建常量字段通常不是一个好主意,除非你真的知道你在做什么。

这就是它的理论。

在实践中,您有时可能会看到人们诉诸各种“黑客”并且完全忽略了该领域的常数。例如,可以使用memcpy将整个结构“分配给”。在C语言的某些情况下,您无法选择执行类似的操作(例如,使用malloc ed对象,因为C语言无法在此类上下文中提供初始值设定项。

同样,C语言不太适合处理这些类型,这就是为什么它们只应在规划得非常好的环境中使用。

答案 1 :(得分:3)

您可以在struct initialiser中执行此操作,例如

int main()
{
    struct temp tester = { .i = 5 };
}