解释下面代码
原理:
1.i和arr是局部变量,局部变量是放在栈区上的
2.栈区内存的使用习惯是先使用高地址处的空间,再使用低地址处的空间
3.数组随着下标的增长,地址是由低到高变化的
int main()
{
int i=0;
int arr[10]={0,1,2,3,4,5,6,7,8,9,10};
for(i=0;i<=12;i++)
{
arr[i]=0;
printf("hehe");
}
return 0;
}
i与数组之间的空间是又编译器内存分配决定的
vc6.0 中间没有空间
gcc 中间有1个整形空间
vs 中间有2个整形空间
int main()
{
const int m=0;
//m=20;//err
int* p=&m;
*p=20;
printf("%d\n",m);
return 0;
}
虽然说m被const修饰,但可以拿到m的地址通过解引用来简接访问到m