首页 > 解决方案 > 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;
    }

标签: arrayspointers

解决方案


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]。

清如泥?:-)


推荐阅读