在初始化数组的时候遇到后一个数组的指针与前一个重叠:
size_t n = 6;
size_t f1[n];
size_t f2[n];
size_t ls[2][n-1];
printf("&ls[1][5] = %p\n&f2[0] = %p", &ls[1][5], f2);
输出结果为:
&ls[1][5] = 0x7fff501f3730
&f2[0] = 0x7fff501f3730
用 malloc
动态分配或者将 size_t f2[n]
放到 ls
声明的后面不会有问题,那上面出现这个问题的原因是什么呢?
理解了上面,放到后面就更好理解了,f2在ls下面,这时候应该是ls0的地址和f2[n]相等