用static 定义的数组不赋初值,那还定义它有什么用

道定义完成后可以在程序中给static数组赋值?不是static变量的数值是固定不变、不可以赋值的吗?如staticinta=3;则无论给a赋任何值,a都等于3... 道定义完成后 可以在程序中给static数组赋值?
不是static变量的数值是固定不变、不可以赋值的吗?
如static int a=3;
则无论给a赋任何值 ,a都等于3
展开
 我来答
lovedingxijin
推荐于2017-10-06
知道答主
回答量:15
采纳率:0%
帮助的人:14.5万
展开全部
你理解错了。static只是指定将其存储在静态存储区。不同于一般变量,一般变量在运行时候由程序分配内存,而静态变量编译的时候就将分配内存,比如你的问题中,a将被赋值为3,然后,如果你在程序中写a=a+1;a就会变成4,静态变量和一般变量唯一的不同就是整个程序运行期间都将存在。她所在的内存不会被释放。
你说的变量不能赋值,固定不变,那不是static,而是const,将变量变成一个常变量,当作常数一样使用,如const a=4,那么在程序运行中,a不能被改变值。
百度网友01136f8
2012-11-22 · TA获得超过906个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:185万
展开全部
楼主你好~~

static是初学者经常搞错的概念之一,静态什么的谁知道是什么意思啊~所以给楼主详细说说。

static定义的变量在程序初始化的时候会初始化在静态数据区,程序运行期间完全不变,是指这个区域不变,而内容是可以改变的~

这一点跟const关键字不一样,const关键字定义的是只读变量,一经赋值,再也不能改变了。
但是const也是初学者经常搞错的概念之一,const代表只读变量,而不是常量,常量通常是用enum或者宏来定义的~

然后其实static主要的作用并不是来定义什么静态变量什么不变量什么的,况且他也做不到这点。
static最重要的作用是控制元素的作用域。被static的变量或者方法,将是只有本文件可见的!

打个比方:
我有两个文件 a.c和b.c,其中a.c中是这样的:
int _a = 1; // 这是一个全局变量
void fun() // 这是一个全局函数

{
...

}

这时候在b.c中是可以调用_a和fun()的,但是如果我加入了在_a或者fun()之前加入了static,那么两者均只能在a.c中被调用。

楼主可能会问,这有什么好处呢?
好处主要是两种:
1)不同文件的全文件变量或者函数可以采用同样的变量/函数名,方便编程,static起到了隔离文件的作用。
2)有些变量你想让他作为一个长期变量/函数,但是又不想让他成为全局变量/函数,static就有用了,因为static变量/函数跟全局变量/函数在初始化时同样是开辟在静态区的。

另外,值得注意的一点是,当初设计static的时候,因为变量将被储存在静态区域,因为副作用,初始值将全部置0x00,这一点被很多程序猿利用来对字节进行置0初值操作哦~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanglixin1001
2012-11-22 · TA获得超过4173个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:856万
展开全部
static的意思容易让人产生误解,以为是“静态的,不可变的”,事实上,它是指把定义的变量保存在程序的静态数据区。从而保持变量内容的持久。
存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。
所以如果static int a;那么程序自动初始化为0,static int a=1;程序初始化为1。
以后还可以像正常变量一样使用a,给它赋值,加减操作等等。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-11-22
展开全部
static变量的值可以改变。

static int a=3;只是赋初值,之后还可以向a赋其它值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式