C中结构体变量为全局变量或静态变量时才能初始化么?

看机械工业出版社出版的c语言程序设计(2004年1月第1版)P181中说结构体变量为全局变量或静态变量时才能初始化,但下面又有程序#includ<stdio.h>main... 看机械工业出版社出版的c语言程序设计(2004年1月第1版)P181中说结构体变量为全局变量或静态变量时才能初始化,但下面又有程序
#includ<stdio.h>
main()
{struct student
{long num
.......
}stu1={102001,......}
stu2={102002,......}
.......
}
那不是初始化了一个动态的结构体变量么?
展开
 我来答
coolxp2005
推荐于2016-03-08 · TA获得超过823个赞
知道小有建树答主
回答量:202
采纳率:0%
帮助的人:162万
展开全部
在ANSI制订C标准之前,确实如该书所说,结构体变量(或数组)为全局变量或静态变量时才能初始化,局部动态的结构体变量(或数组)不允许初始化。

但1989年ANSI制订的第一个C标准(通常称为C89)即规定:允许局部动态的结构体变量(或数组)被初始化。

你那本书虽然在2004年才出版,却不符合C89的规定,很是遗憾!

不允许对局部动态的集合类型的对象(如结构体变量,数组)进行初始化,是担心效率太低,比较耗时,因为动态局部变量的初始化在每次进入函数时都要进行。

ANSI制订C89标准时,考虑到在使用过程中确有对动态局部结构体(或数组)进行初始化的实际需要,便规定允许这种行为。
liujq007
2009-01-18 · TA获得超过942个赞
知道大有可为答主
回答量:1035
采纳率:0%
帮助的人:1067万
展开全部
实践是检验真理的唯一标准

别把书当成圣经,自己运行一下程序检验一下就知道对错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式