C++ 基于指针的查询 #包括 void main() { int arr[2][3][2]={{{2,4},{7,8},{3,4},},{2,2},{2,3},{3,4},}; cout

C++ 基于指针的查询 #包括 void main() { int arr[2][3][2]={{{2,4},{7,8},{3,4},},{2,2},{2,3},{3,4},}; cout,c++,pointers,C++,Pointers,*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+1)+2+7; } #包括 void main() { 国际无线电广播[2][3

*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+1)+2+7;
}
#包括
void main()
{
国际无线电广播[2][3][2]={
{{2,4},{7,8},{3,4},},
{{2,2},{2,3},{3,4},}
};

cout
*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+1)+2+7;
}
#包括
void main()
{
国际无线电广播[2][3][2]={
{{2,4},{7,8},{3,4},},
{{2,2},{2,3},{3,4},}
};
库特
与

**(*arr + 1) + 2 + 7

**(arr[0] + 1) + 2 + 7
arr[0][1][0]
定义为7

所以编译器是正确的,答案是16

**(*arr + 1) + 2 + 7

**(arr[0] + 1) + 2 + 7
arr[0][1][0]
定义为7


因此,编译器是正确的,答案是16。

其他答案是正确的。请尝试在代码中执行此操作,以查看自己的实际操作:

arr[0][1][0] + 2 + 7
#包括
int main()
{
国际无线电广播[2][3][2]=
{
{
{2,4},{7,8},{3,4},
},
{
{2,2},{2,3},{3,4},
}
};

std::cout其他答案都是正确的。请尝试在代码中执行此操作,以查看自己的实际操作:

arr[0][1][0] + 2 + 7
#包括
int main()
{
国际无线电广播[2][3][2]=
{
{
{2,4},{7,8},{3,4},
},
{
{2,2},{2,3},{3,4},
}
};

std::cout为什么你认为答案应该是11?我认为表达式
*arr+1
没有达到你期望的效果。首先尝试使用数组索引语法使其正常工作,然后使用逐步将每个数组索引转换为指针算法。@cricket\u 007实际上我使用的是元素反引用。这就是我错误的answ的原因呃。现在。我得到了解释,谢谢。为什么你认为答案应该是11?我认为表达式
*arr+1
没有达到你期望的效果。首先尝试使用数组索引语法使其正常工作,然后使用逐步将每个数组索引转换为指针算术。@cricket\u 007实际上我使用的是元素反引用。这就是是我回答错误的原因。现在。我明白了。谢谢。