指针地址问题,请达人解释?
void main(void)
{
int nVar1=100,nVar2=200,nVar3=300;
int *Array[3];
Array[0]=&nVar1;
Array[1]=&nVar2;
Array[2]=&nVar3;
printf("%d\n",Array); 1
printf("%d\n",Array[0]); 2
printf("%d\n",*Array); 3
//printf("%d\n",*(++Array[1])); 4
//printf("%d\n",*(--Array[1])); 5
}
代码如上,其中打印出来的1 的内容是地址(整个数组的地址向下移动一个单元),而2的内容和3的内容一样(都是数组的初始地址,即第一个元素的起始地址),为什么3的内容不是100??;
另外,跟大家分享一下,栈的内存分配是自高位向地位分配的,所以4的内容是100,5的内容是300;
堆的分配是低地址向高地址分配;