【发布时间】:2021-11-18 16:45:05
【问题描述】:
您好,我正在学校学习 c,对这个问题有点困惑。
也就是说,b 是两个 d 数组,我正在尝试围绕打印值和地址来实现,
但是为什么*(b+1) 给出的东西和b+1 一样呢?
我以为*(b+1) 会给出第二行第一个元素的值。
如果我将printf("%p\n", *(b+1)) 更改为printf("%d\n", *(b+1)),它只会给出一个垃圾值。
为什么会这样?
我感谢任何反馈!谢谢
int main()
{
int b[3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
printf("b:\n");
print_2d_array(3, 4, b);
printf("\n");
printf("%p\n", b);
printf("%p\n", *(b+1));
printf("%p\n", b+1);
return 0;
}
输出是这样的,
b:
0 1 2 3
4 5 6 7
8 9 10 11
0x7ffeecee6730
0x7ffeecee6740
0x7ffeecee6740
【问题讨论】:
-
二维数组是数组的数组。所以取消引用它会得到嵌套数组之一。