You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

const限定符作用于结构体的疑问:成员是否继承const属性?

const结构体的只读机制解析

先看你写的代码:

struct point
{
    int x;
    int y;
};

const struct point p = {1, 2};
p.x = 3; // 触发编译错误

编译器报的错误"assignment of member 'x' in read only object",本质是因为你把整个结构体对象p声明成了const类型,这直接导致p的所有成员都被视为只读的,不能被赋值修改。

具体机制是这样的:

  • 当你写const struct point p时,p的类型是const struct point,不是普通的struct point变量加const标记。这意味着p是一个const限定的结构体对象,整个对象的内存空间都被标记为只读。
  • 对const对象的任何成员访问,都会被编译器视为const类型的成员——比如p.x会被当作const int,而C语言里不允许给const类型的左值赋值,所以编译器直接报错。

简单说,不是成员"继承"了const属性,而是整个p对象是只读的,它的所有成员自然也就不能被修改。哪怕结构体里的成员原本是普通可读写的int,只要所属的对象是const,这些成员就会被编译器限制为只读。

内容的提问来源于stack exchange,提问作者xdevel2000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 18:55:53