【发布时间】:2012-11-30 05:13:55
【问题描述】:
我对 C 中的二维数组感到困惑。我的代码是:
main()
{
int i, j;
int arr[3][4] = {
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 0, 1, 6 }
};
printf("\narr: %u", arr);
printf("\n&arr: %u", &arr);
printf("\n*arr: %u", *arr);
}
上面程序的输出是:
arr u: 3215469448
&arr: 3215469448
*arr: 3215469448
现在告诉我所有 3 个 printf 语句如何显示单个位置的地址。 只需大致解释这些地址是如何相同的。
我知道,之前也有人问过类似的问题,但他们没有帮助我。不要向我推荐Memory map for a 2D array in C 和MEMORY MAP for 2d / multidimensional arrays ...
【问题讨论】:
-
“不要让我参考 C 中二维数组的内存映射和二维/多维数组的内存映射......” 为什么不呢?你问了同样的问题,答案还是一样的。数组衰减为指针,数组的地址也是该指针,多维数组上的前缀-
*取消引用返回第一个衰减为指针的低维数组... -
arr u: 3215469448中可能存在拼写错误。u不需要。我试图解决这个问题,但出现错误too short fix。 -
您需要针对这个完全相同的问题(包括您提供的两个链接)的数千个资源进行自己的研究。投票关闭“请向我解释此代码”过于本地化,尽管是的,也可以说这与您所说的对您没有帮助的问题完全重复。