C语言 结构体声明中const成员如何初始化 20

typedefconststruct{constintn;}A;constintnum=7;Aa={num};报错!c的编译环境,请高手指教阿!!!... typedef const struct{ const int n; }A;
const int num = 7;
A a = { num };
报错! c的编译环境,请高手指教阿!!!
展开
 我来答
风若远去何人留
推荐于2016-02-20 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450116
专业C/C++软件开发

向TA提问 私信TA
展开全部
const成员必须在定义的时候同时初始化,而不能在后续再进行赋值。

结构体定义时初始化的方法为:
struct type_name var_name = {value1, value2, ...};
其中type_name为结构体类型名,var_name为结构体变量名。=后面的大括号中,是各个成员变量的初始化值,根据成员变量的定义顺序一一对应。在初始化变量表内没有显式定义的,系统默认初始化值为0。
kaixingui2012
推荐于2017-12-16 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6327万
展开全部
//估计是你的分号问题,不能是中文符号,程序只支持英文符号
#include <stdio.h>
typedef const struct{ const int n; }A ;
int main()
{
const int num = 7;
A a = { num };
printf("a=%d\n" , a.n );
system("pause");
return 0;
}
以上在windows dev C++编译器下测试通过
更多追问追答
追问
都说了要在c环境下编译阿,c++可以编译早晓得了。。。不是什么;号之类的低级错,就想知道有没有办法在num前面cast个什么让它成功
追答
呵呵,那是编译器的名字 DEV C++
写的程序就是用C编译运行的。
现在的较新版本的C编译器都支持上面的程序写法
不知道你用的是什么编译器?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
怎样私有你d1533
2013-03-16 · TA获得超过607个赞
知道小有建树答主
回答量:423
采纳率:0%
帮助的人:240万
展开全部
学习了
c语言结构体变量尽量不要用const
C语言的任何const变量都不能用const变量初始化,这是C语言和C++的一个很大的不同……
更多追问追答
追问
大侠,谢谢了,现在我A a={ num}的这个num 必须是个 const 所以想请教下,能否 在 num前面cast个什么东西 让它编译通过,c环境,不是c++环境。而且,还有种情况,我删除了typedef const struct{ const int n; }A中的const,然后编译,报的错都一样,说是expression  must have a  constat value。还望大侠不吝赐教阿。。。拜谢
追答
const变量必须在定义是初始化,以后其值不可以改变
你可以把程序贴出来看一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
htmlasping
2021-07-24
知道答主
回答量:9
采纳率:0%
帮助的人:5102
展开全部
因为你定义的const结构体变量是全局变量属于静态存储区只能赋值常量值不能赋值变量
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zjfaok
2013-03-16 · TA获得超过6806个赞
知道大有可为答主
回答量:4146
采纳率:62%
帮助的人:1591万
展开全部
C语言的任何const变量都不能用const变量初始化,这是C语言和C++的一个很大的不同……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式