Указатель на многомерный массив C ++ - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь понять, как использовать указатели с многомерными массивами (например: 2 измерения, 3 измерения ...). Я видел много ресурсов в Интернете по этому поводу, но все еще не могу этого понять. Синтаксис тоже меня сбивает. Что означают эти следующие синтаксисы (зачем нам скобки)? Что делает код и как он работает? Спасибо!

Пример 1

int (*array)[5] = new int[10][5];

Пример 2

int c[3][2][2]; 
int (*p)[2][2] = c; 

1 Ответ

3 голосов
/ 14 июля 2020
  1. int (*arr)[5]: arr это указатель , указывающий на массив из 5 целых
  2. int (*p)[2][2] = c; : p это указатель , указывая на массив из 2, причем каждая строка имеет массив из 2 ints

Как это работает? Посмотрите на следующий простой пример:

    int (*array)[2] = new int[3][2];

    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 2; j++)
            array[i][j] = i + j;
    }
    
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 2; j++)
            cout << array[i][j] << ' ';
        cout << '\n';
    }

Вывод:

0 1 
1 2 
2 3 

Зачем нужны скобки?

Рассмотрим:

int *arr[3];

Здесь arr - это массив размером 3, который может хранить 3 указателя. Итак, это массив указателей. См .:

int a = 10;
int b = 20;
int c = 30;
arr[0] = &a; //arr[0] pointing to a
arr[1] = &b; //arr[1] pointing to b
arr[2] = &c; //arr[2] pointing to c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...