小编use*_*725的帖子

带指针的二维数组

在下面可以解释执行时获得的输出:

#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)
  • &a [0]是数组起始地址的地址
  • 和str [0]是相同的

    有人可以解释str [3]的地址是如何0xbf7f6292.根据我的理解,&str [0]和&str [3]应该相差30个字节.

    还请有人解释其他两种情况的输出方式.

提前致谢

c

5
推荐指数
2
解决办法
1229
查看次数

标签 统计

c ×1