c语言静态存储数组的赋值问题。

c语言规定,只有静态存储数组才能初始化,静态存储数组要用static定义,为什么谭浩强的书在定义字符数组时从来不用static,而是直接赋值?... c语言规定,只有静态存储数组才能初始化,静态存储数组要用static定义,为什么谭浩强的书在定义字符数组时从来不用static,而是直接赋值? 展开
 我来答
geraint0923
2012-08-21 · TA获得超过336个赞
知道小有建树答主
回答量:102
采纳率:100%
帮助的人:117万
展开全部
使用static定义静态数组,这个数组就会在程序的整个生命周期里存在,并且这个数组会分配并放在程序的.bss段中,这个段中的所有数据都是会被自动初始化为0的,如果是声明在函数中,那么调用这个函数每次使用的数组都是同一个数组,如果不是在函数中定义,那么这个数组就仅限于在此文件中可用。

而没有static声明的数组,这个数组会在调用这个函数所在的栈帧中分配,也就是在栈上分配,这个数组就不会被初始化,数组中的值是随机的,如果在函数中定义,那么调用这个函数时每次使用的数组一般是不同的。

至于要不要用static来声明,一方面是看你是否需要这个数组被长久使用,另一方面就是看是否需要让它自动初始化为0,还有就是在其他文件中是否需要使用这个数组。
记住一座城
2012-08-13 · TA获得超过728个赞
知道小有建树答主
回答量:1091
采纳率:33%
帮助的人:669万
展开全部
静态数组和动态数组都可以初始化,只不过动态数组在定义时如果没有初始化,数组元素的值是随机值,而静态数组在定义时如果未初始化,编译器会自动把数组元素置0。
比如int a[10] 数组元素的值不确定是随机值,可能是-8997777666之类。
static int a[10] 数组所有元素的值为0。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友02d2007
2012-08-17 · TA获得超过140个赞
知道小有建树答主
回答量:196
采纳率:100%
帮助的人:110万
展开全部
动态数组与静态数组都可以初始化,要养成加static的好习惯,通常全局变量不确定的都要加static,这样比较保险,这样做是为了满足程序的借口最小化原则,是变量的名字只是在翻译单元内可见。改变了变量的链接属性,即翻译单元外的其他程序不可以直接使用该变量。

但是不加static也是正确的,只是加上比较保险一点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
coco_jar
2012-08-13
知道答主
回答量:16
采纳率:0%
帮助的人:10.1万
展开全部
静态数组也是可以初始化
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
于于祥祥c94b09
2012-08-13 · TA获得超过653个赞
知道小有建树答主
回答量:766
采纳率:0%
帮助的人:306万
展开全部
”只有静态存储数组才能初始化“这句话是哪里的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式