C 中指针的混乱

发布于 2024-12-15 02:48:12 字数 253 浏览 0 评论 0原文

我正在学习 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

聊慰 2024-12-22 02:48:13

好吧,它是一个数组的数组,因此索引/取消引用它一次会得到一个数组,该数组会衰减为指针......

Well, it's an array of arrays, so indexing/dereferencing it once gives you an array, which decays to a pointer...

慕巷 2024-12-22 02:48:13

因为多维数组可以写为 **i,所以你执行 *(i) 会得到第一个数组的地址。

Because a multidimensional array is can be written as **i so you doing *(i) gives you the address of the first array.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文