当前位置:首页 > 内存 > 正文

数组内存分配(数组在内存中如何分配)

  • 内存
  • 2024-06-11 06:33:57
  • 9595

一、关于C语言中数组分配内存等问题!额,本人是菜鸟,被一C语言书上的话弄晕了!如果我的问题有些怪,请见谅1.准确地说,局部变量只有在调用函数时才会分配内存空间。然而,该内存空间的分配是在编译时确定的。
[10]也会自动从10个“\0”字符开始。
3.普通表是静态表。分散动态数组的申请方法一般为:
int*a=malloc(sizeof(int)*10);//该语句适用于可容纳10个int的动态数组。迪让哥
静态数组的意思是:数组的大小是在程序编译后确定的。动态数组的意思是:在程序运行之前无法知道数组的大小。
例如inta[10];所以它是固定的,它的大小是10个元素。
但是动态分配的方法不一定一样。例如:
intn;
....
int*a=malloc(sizeof(int)*n);//分配动态数组。数组的大小由n决定。
二、c语言数组在内存中是怎么分配的?

C语言中的内存分为三类:栈区、堆区、静态数据区。

局部变量在堆栈上分配。函数调用和虚拟化之前的堆栈指针必须与函数返回后的堆栈指针相同。否则会出现错误。

voidtest(void)

{

chari,a[10];

printf("0x%x",&i);

printf("0x%x",a);

printf("0x%x",a+1);

printf("0x%x",a+2);

printf("0x%x",a+3);

}

扩展信息

C语言数组内存分配

示例:

#include

intmain()

{

inta[4]={11,12,13,14};

intb[4]={21,22,23,24};

int*pa=&zhouranchaa;

inti=0;

while(i<8)

{

i++;

printf("now*pvalue=%dand",*pa);

printf("paddrvalue=%d\n",pa);

pa++;

}

return0;

}