c++ - 基于指针的查询

标签 c++ pointers

#include<iostream.h>
void main()
{
    int arr[2][3][2]={{{2,4},{7,8},{3,4},}, {{2,2},{2,3},{3,4}, }};
    cout<<**(*arr+1)+2+7;
}

根据我的说法,答案是 11,但编译器显示的是 16。 谁能解释一下解决方案? 提前致谢

最佳答案

*arr 等同于 arr[0]

*(arr[0]+1) 等同于 arr[0][1]

*arr[0][1] 等同于 arr[0][1][0]

因此,您的代码等同于:

#include<iostream.h>

void main()
{
    int arr[2][3][2]={
      {{2,4},{7,8},{3,4},},
      {{2,2},{2,3},{3,4},}
    };
    cout << arr[0][1][0]+2+7;
}

arr[0][1][0] 是 7,所以你得到 7+2+7,也就是 16。

关于c++ - 基于指针的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34568592/

相关文章:

c# - List<T> 是指针吗?

c - strtok 的奇怪指针问题

c++ - Cocos2d-x : How can I draw a resizing rectangle?

c++ - 为 DLL 实现 C++ 类时出现错误 LNK2019

c - 为什么我在尝试将 'char (*c)[6]' 传递给需要 'const char (*c)[6]' 的函数时收到警告?

c - 内存错误 - C 中的简单 XOR 加密

c++ - 使用模板化类型名的函数模板特化

c++ - 在 Visual Studio 中将二进制文件添加到资源

C++ - 竞争性类型转换/作业

c - 设置孪生指针的最有效算法