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