基于指针的查询
Query based on Pointer
#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。
**(*arr + 1) + 2 + 7
与
**(arr[0] + 1) + 2 + 7
同
arr[0][1][0] + 2 + 7
根据定义,arr[0][1][0]
是 7。
所以编译器是正确的,答案是 16。
其他答案是正确的。尝试在代码中执行此操作,以亲自查看它的实际效果:
#include <iostream>
int main()
{
int arr[2][3][2]=
{
{
{2,4},{7,8},{3,4},
},
{
{2,2},{2,3},{3,4},
}
};
std::cout << *arr << std::endl; // 0x7fff5a3a6710
std::cout << *arr+1 << std::endl; // 0x7fff5a3a6718
std::cout << *(*arr+1) << std::endl; // 0x7fff5a3a6718
std::cout << **(*arr+1) << std::endl; // 7
std::cout << **(*arr+1)+2+7 << std::endl; // 16
return 0;
}
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 查询SQLite数据库中的日期
- 数组的指针从不分段故障
- 我可以查询是否是动态分配数组中的第一个指针
- 有关C++中的指针的查询
- C++指针查询
- 基于指针的查询
- 来自新手用户的共享指针查询.我下面的代码在使用带有成员共享指针的类容器时崩溃
- 指针基础:一个简单的查询
- 如何向上查询或向下查询接口指针
- C++指针查询
- 查询指针解引用
- 指针增量查询