c语言中数组不初始化就不给分存内存空间吗?
当然给分配空间,至于用不用,是否初始化,C语言以程序员为正确。
不信写个程序试试,看看电脑报错没。
#include
int
main
()
{
int
arr[100000000];
while(1);
return
0;
}
c语言数组在内存中是怎么分配的?
C语言中内存为分三类:栈区、堆区、静态数据区。
局部变量在栈上分配,函数调用前的栈指针,要和函数返回后的栈指针一样,否则就会出错。
void test(void)
{
char i,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语言数组在内存分配
示例:
#includestdio.h
int main()
{
int a[4] = {11,12,13,14};
int b[4] = {21,22,23,24};
int *pa = a;
int i = 0;
while(i8)
{
i++;
printf(“now *p value = %d and”,*pa);
printf(“p addr value = %d \n”,pa);
pa++;
}
return 0;
}
C语言定义数组时一定要分配空间么
是的,c中数组定义时要指定大小。
当然,万事也不是绝对的。例如:1.作为形参的时候,可以不指定,因为在函数调用的时候,数组会转为指针的。2.当为字符串数组时,char
st[]=”hello
word”这儿定义了一个st字符数值,不需要你自己去指定大小,系统会自动生成长度为11.
c语言里面的二维数组的存储空间分配
数组
的空间分配是固定的,不能是动态的
,象
int
a[10]
,刚开始定义这个数组时就分配给它
10×sizeof(int)
个字节,不管你能不能用完它都是占这么多内存,但是如果你输入的数据多于10个,就会溢出,导致错误的产生!!!所以请注意!!!