Какая польза указателя на массив - PullRequest
0 голосов
/ 13 февраля 2019

Какая польза иметь указатель на массив, когда у нас может быть один массив указателей.

вместо указателя на массив мы можем использовать массив размера 1, и ожидается тот же результат.

int main()
{
    int arr[] = {20,30,40,50,60,70};
    int (*ptr)[6] = &arr;
    int *prtarr[1] = { arr };

    for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
    {
        cout << arr[i] << endl;     
        cout << ptr[0][i] << endl;
        cout << prtarr[0][i] << endl;
    }  
    return 0;
}

1 Ответ

0 голосов
/ 13 февраля 2019

Самое распространенное использование указателя на массив - когда вы хотите передать многомерный массив (фактически указатель на элемент многомерного массива), тогда используется указатель на массив

void multd_array_func(int (*arr)[6]);

Из другой функции этоФункция может быть вызвана как

int arr[] = {20,30,40,50,60,70};
multd_array_func(&arr);

Это не может быть сделано только с помощью указателя.В вышеупомянутой функции передача arr или prtarr[0] не будет работать.Это несовместимые типы указателей с int (*)[6].

Вы можете увидеть разницу между arr, *ptr и ptrarr[0], напечатав размер

printf("%zu %zu %zu", sizeof(arr), sizeof(ptrarr[0]), sizeof(*ptr));

Это напечатает

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