struct temp{
const int i;
};
如何在main()函数中初始化变量'i'?
答案 0 :(得分:5)
您不能将任何内容分配给常量对象。常量对象只能在声明点初始化,如
struct temp t = { 5 };
即。你只有一次机会。如果你错过了初始化一个常量对象的机会,那么你运气不好 - 该对象将永远未被初始化。
由于这个原因,在一般非常量的struct对象中创建常量字段通常不是一个好主意,除非你真的知道你在做什么。
这就是它的理论。
在实践中,您有时可能会看到人们诉诸各种“黑客”并且完全忽略了该领域的常数。例如,可以使用memcpy
将整个结构“分配给”。在C语言的某些情况下,您无法选择执行类似的操作(例如,使用malloc
ed对象,因为C语言无法在此类上下文中提供初始值设定项。
同样,C语言不太适合处理这些类型,这就是为什么它们只应在规划得非常好的环境中使用。
答案 1 :(得分:3)
您可以在struct initialiser中执行此操作,例如
int main()
{
struct temp tester = { .i = 5 };
}