int name[]={1,2,3,4,5};
int *p=name;
int **k=&p;
int ***i=&k;
int ****j=&i;
int *****h=&j;
printf("name[0]:%p\n",&name[0]);
printf("name[1]:%p\n",&name[1]);
printf("name[2]:%p\n",&name[2]);
printf("name[3]:%p\n",&name[3]);
printf("name[4]:%p\n",&name[4]);
printf("p:%p\n",p);
printf("k:%p\n",k);
printf("&p:%p\n",&p);
printf("&k:%p\n",&k);
printf("&i:%p\n",&i);
printf("&j:%p\n",&j);
printf("&h:%p\n",&h);
发现了没 ,数组由a[4]到a[0]地址依次递减,按照我前面那篇文章字符指针的 主函数中 前面的代码应该先读入放入栈顶(低地址),后存的放入栈底(高地址),那么 p k i j h 的地址应该在name[4]前面,事实是放在了name[0]后面,相差8个字节:然后p k i j h指针地址 代码在前面的存入低地址,代码在后面的存入了高地址,这还是一致的。问题是 为什么数组指针放一块 ,指针跑到数组地址后面去了呢?