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

Har*_*h R -2 c

struct temp{
const int i;
};
Run Code Online (Sandbox Code Playgroud)

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

AnT*_*AnT 5

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

struct temp t = { 5 };
Run Code Online (Sandbox Code Playgroud)

也就是说你只有一次机会.如果你错过了初始化常量对象的机会,那么你就不幸了 - 对象将永远保持未初始化状态.

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

这就是它的理论.

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

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