C 中指针的混乱
我正在学习 C,现在我对指针感到困惑。我的问题是,为什么不 printf("%d", *(i));使用多维数组时返回元素而不是地址?
#include <stdio.h>
int main()
{
int i[2][2] = {{1,8},{2,9},{3, 4}};
//int i[2] = {1,2,3};
printf("%d", *(i));
printf("\n%d", i);
}
I'm learning C and now I'm having confusion in pointers. My question is, why doesn't printf("%d", *(i)); return the element instead of address while using multidimensional array??
#include <stdio.h>
int main()
{
int i[2][2] = {{1,8},{2,9},{3, 4}};
//int i[2] = {1,2,3};
printf("%d", *(i));
printf("\n%d", i);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
好吧,它是一个数组的数组,因此索引/取消引用它一次会得到一个数组,该数组会衰减为指针......
Well, it's an array of arrays, so indexing/dereferencing it once gives you an array, which decays to a pointer...
因为多维数组可以写为 **i,所以你执行 *(i) 会得到第一个数组的地址。
Because a multidimensional array is can be written as **i so you doing *(i) gives you the address of the first array.