C语言数组,结构和联合的初始化式必须只包含常量表达式

ssjssh 2013-07-17 08:45:47
如题,这是c语言程序设计--现代教程里面的一句话,我的问题是为什么是这样。
...全文
324 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2013-07-17
  • 打赏
  • 举报
回复
c89 的规定,无论是全局还是局部, c99 改为只对全局
图灵狗 2013-07-17
  • 打赏
  • 举报
回复
常量是已经存放在你的二进制代码中的。
引用 3 楼 ssjssh 的回复:
引用 2 楼 turingo 的回复:
初始化的时候,程序还未跑起来,只有常量表达式的值是确定的。 [quote=引用 楼主 ssjssh 的回复:] 如题,这是c语言程序设计--现代教程里面的一句话,我的问题是为什么是这样。
难道C语言在程序开始之前就已经分配好空间了,还有Java可以声明使用变量,Java是怎么实现的?[/quote]
lin5161678 2013-07-17
  • 打赏
  • 举报
回复
为什么会这样呢 因为书说错了 根本没这回事 初始化才没管你是 数组,结构和联合还是基础类型 能用变量初始化的 就只有局部非static变量 其他的都不可以 仅此而已
ssjssh 2013-07-17
  • 打赏
  • 举报
回复
引用 2 楼 turingo 的回复:
初始化的时候,程序还未跑起来,只有常量表达式的值是确定的。
引用 楼主 ssjssh 的回复:
如题,这是c语言程序设计--现代教程里面的一句话,我的问题是为什么是这样。
难道C语言在程序开始之前就已经分配好空间了,还有Java可以声明使用变量,Java是怎么实现的?
图灵狗 2013-07-17
  • 打赏
  • 举报
回复
初始化的时候,程序还未跑起来,只有常量表达式的值是确定的。
引用 楼主 ssjssh 的回复:
如题,这是c语言程序设计--现代教程里面的一句话,我的问题是为什么是这样。
青松2 2013-07-17
  • 打赏
  • 举报
回复
对于一个完整的程序,在内存中的分布情况如下: 代码区 //low address 全局数据区 堆区 栈区 //high address 一般程序把新产生的动态数据存放在堆区,函数内部的自动变量存放在栈区。自动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静 态局部变量)也存放在全局数据区。全局数据区的数据并不会因为函数的退出而释放空间。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧