首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于数组的在内存中分配的有关问题

2012-02-23 
关于数组的在内存中分配的问题 我在看一本关于C/C++的书,在讨论内存分配的问题时,有如下叙述:数组要么在静

关于数组的在内存中分配的问题

我在看一本关于C/C++的书,在讨论内存分配的问题时,有如下叙述:

数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。

==========我想提问的是:有哪些情况数组可以在静态存储区上创建,哪些情况是在栈上创建的?
请给个例子,谢谢。

[解决办法]
例如有如下程序:

int a[10]; //全局数组,静态存储区创建

int fun()
{
int b[10]; //局部数组,栈内创建
}

int main()
{
int *p=(int *)malloc(sizeof(int)*10); //这是动态数组,堆上创建
}
[解决办法]
int fun()
{
static char p[]={ "sakjhkjshad "}; //也是在静态存储区域

}
[解决办法]
p= "123465 ";//这时p位于栈上的存储区,还是静态存储区?

p位于栈上 "123456 "位于静态存储区。
[解决办法]
p= "123465 ";//这时p位于栈上的存储区,还是静态存储区?


楼上正解.
因为p是在局部定义的变量,
而 "123456 "是一个字符串,字符串都是在静态存储区

热点排行