【问题标题】:How to assign a value to a constant variable which belongs to a structure? [duplicate]如何为属于结构的常量变量赋值? [复制]
【发布时间】:2014-12-15 16:39:18
【问题描述】:
struct temp{
const int i;
};

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

【问题讨论】:

  • 你不能。这是一个常数。或者你可以……但不是真的。

标签: c


【解决方案1】:

你不能分配任何东西给一个常量对象。常量对象只能在声明时初始化,如

struct temp t = { 5 };

即你只有一次机会。如果您错过了初始化一个常量对象的机会,那么您就很不走运了——该对象将永远保持未初始化状态。

因此,在通常非常量的结构对象中创建常量字段通常不是一个好主意,除非您真的知道自己在做什么。

这就是它的理论。

在实践中,您有时可能会看到人们诉诸各种“黑客”,而只是忽略了该领域的常数。例如,可以使用memcpy 将整个结构“分配给”。在 C 语言的某些情况下,您别无选择执行类似的操作(例如,使用 malloced 对象,因为 C 语言不提供在此类上下文中提供初始化程序的方法)。

同样,C 语言不太适合处理此类类型,这就是为什么它们应该只在精心规划的上下文中使用。

【讨论】:

    【解决方案2】:

    您可以在结构初始化器中执行此操作,例如

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

    【讨论】:

    • 运作良好。但是你忘了在那边创建一个对象......
    • @HarishR - 哎呀,干杯
    • 这是一个比 AndreyT 更好的例子,因为它特定于它初始化的成员。他只会做第一个元素并将其余的设置为 0 - 希望我们以后不要将成员添加到顶部。
    猜你喜欢
    • 2020-03-08
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2020-06-26
    相关资源
    最近更新 更多