为什么局部字符数组必须使用static关键词修饰
2013-08-15 15:06
239 查看
void f()
{
static char mybuff[100]; //这里为什么要放static ??
....
}
mybuff是static修饰的局部变量(把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期),不加static的变量存在堆栈中,加static变量存在内存数据区中,如果不是static修饰,每次函数返回后,该数据将不存在了,因为其所在的内存相当与释放了。
ps:按8086的规定,所有的程序所使用的内存都分为四个段,代码段CS、堆栈段SS、数据段DS、附加段ES。在C里没有用Static修饰的变量都是在运行时SS上分配的一用完就会被Delete,用它修饰的就是在程序一开始就在DS上分配的一直到程序结束才会Delete
参考链接:
link1:http://bbs.csdn.net/topics/211180
link2:http://www.cnblogs.com/stoneJin/archive/2011/09/21/2183313.html
{
static char mybuff[100]; //这里为什么要放static ??
....
}
mybuff是static修饰的局部变量(把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期),不加static的变量存在堆栈中,加static变量存在内存数据区中,如果不是static修饰,每次函数返回后,该数据将不存在了,因为其所在的内存相当与释放了。
ps:按8086的规定,所有的程序所使用的内存都分为四个段,代码段CS、堆栈段SS、数据段DS、附加段ES。在C里没有用Static修饰的变量都是在运行时SS上分配的一用完就会被Delete,用它修饰的就是在程序一开始就在DS上分配的一直到程序结束才会Delete
参考链接:
link1:http://bbs.csdn.net/topics/211180
link2:http://www.cnblogs.com/stoneJin/archive/2011/09/21/2183313.html
相关文章推荐
- 为什么接口中的常量必须使用public static final修饰
- tips:为什么接口中的常量必须使用public static final修饰?
- 为什么在C++使用pthread_create()的时候,类成员函数做线程的处理函数必须要定义成static类型的?
- 简述static关键字的作用?(备注:在什么条件下使用static修饰局部变量、全局变量、函数)
- 为什么Java接口里使用public static final修饰成员变量
- 局部内部类访问外部变量为什么需要使用final修饰
- 为什么在C++使用pthread_create()的时候,类成员函数做线程的处理函数必须要定义成static类型的?
- 为什么局部变量必须以final修饰(或者有final实效:java8)才可以在内部类中使用?
- 为什么一个匿名内部类使用一个在其外部定的对象必须使用final修饰
- 为什么java接口中的成员变量必须被static关键字和final关键字修饰
- [C#]为什么Interface里的成员不能使用static修饰?
- 为什么使用字符数组保存密码比使用String保存密码更好?
- 为什么虚函数必须是非静态成员函数 构造函数能为static吗?
- hibernate3保存对象为什么必须使用事务
- 为什么必须使用 Issue Tracking System管理专案?
- static修饰符的使用
- java为什么非静态内部类中不能有static修饰的属性,但却可以有常量?
- 拷贝构造函数的参数为什么必须使用引用类型
- ArrayList中为什么使用transient修饰elementData?
- C++类的线程函数为什么要加static修饰