用static 定义的数组不赋初值,那还定义它有什么用
道定义完成后可以在程序中给static数组赋值?不是static变量的数值是固定不变、不可以赋值的吗?如staticinta=3;则无论给a赋任何值,a都等于3...
道定义完成后 可以在程序中给static数组赋值?
不是static变量的数值是固定不变、不可以赋值的吗?
如static int a=3;
则无论给a赋任何值 ,a都等于3 展开
不是static变量的数值是固定不变、不可以赋值的吗?
如static int a=3;
则无论给a赋任何值 ,a都等于3 展开
展开全部
楼主你好~~
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初值操作哦~
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初值操作哦~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
static的意思容易让人产生误解,以为是“静态的,不可变的”,事实上,它是指把定义的变量保存在程序的静态数据区。从而保持变量内容的持久。
存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。
所以如果static int a;那么程序自动初始化为0,static int a=1;程序初始化为1。
以后还可以像正常变量一样使用a,给它赋值,加减操作等等。
存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。
所以如果static int a;那么程序自动初始化为0,static int a=1;程序初始化为1。
以后还可以像正常变量一样使用a,给它赋值,加减操作等等。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-11-22
展开全部
static变量的值可以改变。
static int a=3;只是赋初值,之后还可以向a赋其它值。
static int a=3;只是赋初值,之后还可以向a赋其它值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询