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语言数组在内存分配
示例:
#include<stdio.h>
int main()
{
int a[4] = {11,12,13,14}
int b[4] = {21,22,23,24}
int *pa = &a
int i = 0
while(i<8)
{
i++
printf("now *p value = %d and",*pa)
printf("p addr value = %d \n",pa)
pa++
}
return 0
}
是的,c中数组定义时要指定大小。当然,万事也不是绝对的。例如:1.作为形参的时候,可以不指定,因为在函数调用的时候,数组会转为指针的。2.当为字符串数组时,char
st[]="hello
word"这儿定义了一个st字符数值,不需要你自己去指定大小,系统会自动生成长度为11.