永发信息网

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

答案:5  悬赏:70  手机版
解决时间 2021-11-07 10:39
  • 提问者网友:原来太熟悉了会陌生
  • 2021-11-06 23:18
c语言静态存储数组的赋值问题。
最佳答案
  • 五星知识达人网友:野味小生
  • 2021-11-06 23:39
使用static定义静态数组,这个数组就会在程序的整个生命周期里存在,并且这个数组会分配并放在程序的.bss段中,这个段中的所有数据都是会被自动初始化为0的,如果是声明在函数中,那么调用这个函数每次使用的数组都是同一个数组,如果不是在函数中定义,那么这个数组就仅限于在此文件中可用。

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

至于要不要用static来声明,一方面是看你是否需要这个数组被长久使用,另一方面就是看是否需要让它自动初始化为0,还有就是在其他文件中是否需要使用这个数组。
全部回答
  • 1楼网友:轻雾山林
  • 2021-11-07 02:53
”只有静态存储数组才能初始化“这句话是哪里的?
  • 2楼网友:玩家
  • 2021-11-07 02:25
静态数组也是可以初始化
  • 3楼网友:毛毛
  • 2021-11-07 01:04
动态数组与静态数组都可以初始化,要养成加static的好习惯,通常全局变量不确定的都要加static,这样比较保险,这样做是为了满足程序的借口最小化原则,是变量的名字只是在翻译单元内可见。改变了变量的链接属性,即翻译单元外的其他程序不可以直接使用该变量。

但是不加static也是正确的,只是加上比较保险一点
  • 4楼网友:佘樂
  • 2021-11-07 00:13
静态数组和动态数组都可以初始化,只不过动态数组在定义时如果没有初始化,数组元素的值是随机值,而静态数组在定义时如果未初始化,编译器会自动把数组元素置0。
比如int a[10] 数组元素的值不确定是随机值,可能是-8997777666之类。
static int a[10] 数组所有元素的值为0。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯