在下面可以解释执行时获得的输出:
#include<stdio.h>
void main()
{
char a[5][10]={"one","two","three","four","five"};
char **str=a;
printf("%p ", &a[0]);
printf("\n%p ", &str[0]);
printf("\n%p ", &str[3]);
printf("\n%p ", &str[1][56]);
printf("\n%p ", &(*(*(str+4)+1)));
}
Run Code Online (Sandbox Code Playgroud)
以下是观察到的输出:
0xbf7f6286
0xbf7f6286
0xbf7f6292
0x38
0x1
Run Code Online (Sandbox Code Playgroud)
和str [0]是相同的
有人可以解释str [3]的地址是如何0xbf7f6292.根据我的理解,&str [0]和&str [3]应该相差30个字节.
还请有人解释其他两种情况的输出方式.
提前致谢
c ×1