一个关于C语言数组的问题

int b[10] 和static int b[10]区别在哪里?是不是在于其地址位置可否更换?如果是这样的话,怎么改变前一种定义方式的地址分配?

第1个回答  2013-03-16
笼统讲,由static修饰的变量的生命是全程的,当程序结束时才结束。所以当它被声明在自定义函数中时与一般的变量区别最明显:这个变量和其它同型变量一样使用,但退出函数时它的值一直存在,下一次调用这个函数时上次的值就是这次的初值了。就这么点区别。当与全局变量相比时,虽然性质不太一样,但作用其实就一样了……
第2个回答  2013-03-16
static是静态的,就是在内存中存的地方不一样。要是从应用的角度来看,就是在全局变化中,特别是在多个函数间运行时,static型的变量值不会丢失,一直保存的是上次运行后的结果,而普通的动态数据类型就不行了追问

但两个定义方式都规定了数组的长度啊,不应该都是静态的吗 动态按说无法限制其长度的

追答

不是说数组的长度是动态分配的。在C语言中,所有的数组长度都不能用未知变量替换的。是说数据在内存中的存储有没有记忆功能的。就好比是电脑的ram和rom的区别

追问

哦 我举个例子啊 一次函数调用之后,一个静态数组被赋值,是不是下一次再使用这个函数的时候,这个静态数组里面的数据就是上次调用留下来的数值?

追答

是这么个情况。比如,一个静态全局变量,在刚开始就赋了初值,在一个子函数里用到了,而这个子函数又被调用了多次,那么这个变量的值要跟着变化这么多次;如果是一个正常的,非静态变量,每次进入到此函数时用到的这个变量的值都是一样的,都是刚开始赋的初值。你这个地方说的是一个数组,其实,和整型变量是一样的。

本回答被提问者采纳
第3个回答  2013-03-16
平时基本没碰过c,但是我印象中c没有static??..
在cpp和java一类oop语言中,static是静态说明符,意思是把一个属性或者方法设为静态的.静态就是在加载类的时候分配内存,而不是跟随新的对象生成而分配内存.说白了就是变成了"类的变量"而不是"对象的变量".追问

有点不太理解……能再通俗些吗

追答

没什么了,我刚才还特意去查了一下,貌似c中的static和oop里面的那个static不太一样.我还是不要误人子弟了.百度一下吧,有答案的网上,只是我不用c看不是太明白.

本回答被网友采纳
相似回答