arrays - int(*p)[3]中的[3]是什么意思?
问题描述
我正在研究 C++ 中的数组和指针。
在这段代码中,我无法理解 'int (*c)[3] = a' 中 [3] 的含义。
是来自'int a [2] [3]'吗?但是有两个数字,2 和 3。
我们为什么不使用 [2]?
请让我知道 (*c) 旁边的数字规则。
#include <iostream>
using namespace std;
int main()
{
int a[2][3] = {{0,1,2}, {3,4,5}};
cout << "\n";
int (*c)[3] = a; // type of a and c: int (*)[3]
cout << "c + 1 = " << c + 1 << "\n";
cout << "\n";
cout << "Distance between c + 1 and a: " <<
reinterpret_cast<uintptr_t>(c+1) - reinterpret_cast<uintptr_t>(a)
<< "\n";
return 0;
}
解决方案
a是一个二维数组,2组3个整数。
c是指向 3 个整数的一维数组的指针。在c的声明中,[3] 定义了c的大小。
由于c是一个指针,设置c = a将c指向a 中的第一个三元组(c[0]=>a[0][0], c[1]=>a[0][1], c[2 ]=>a[0][2])
当我们递增时, c上的 [3]变得很重要: c + 1实际上是a[1] ,即a中的第二个三元组。指针c增加了c的大小,即 int[3]。
清如泥?:-)
推荐阅读
- python-3.x - 如何存储 simple_salesforce 更新响应?
- javascript - 根据承诺值停止执行发布请求功能?
- swift - Objective-C 和 Swift,使用辅助编辑器。可空性
- sql - array_agg 来自两个不同的表,没有连接
- python - 如何在python中指定没有实际名称的父目录
- html - 如何禁用同一 HTML 中的文本区域或 mat-form-field(Angular 9)
- r - 在 R 中创建散点图面板(不是完整矩阵)
- pandas - 如何在 Pandas 中创建仅包含 Nones 但具有特定类型的列?
- kubernetes-helm - 有没有办法在不使用后期渲染器的情况下修补 Helm 创建的命名空间?
- html - 如何正确设置 CSS Grid 的自适应最大高度