что означает [3] в int (* p) [3]? - PullRequest
1 голос
/ 18 октября 2019

Я изучаю массив и указатель в c ++.
В этом коде я не могу понять значение [3] в 'int (* c) [3] = a'.
Is isпришел из '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;
    }

1 Ответ

0 голосов
/ 18 октября 2019

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

То, что [3] в c становится важным, когда мы увеличиваем: c + 1 на самом деле a [1] , вторая тройка в a . Указатель c увеличивается на величину c , то есть int [3].

Очистить как грязь? : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...