指向数组的指针有什么用

时间:2019-02-13 13:20:00

标签: c++ arrays pointers

当我们只有一个指针数组时,拥有指向数组的指针有什么用。

我们可以使用大小为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 :(得分:1)

指向数组的指针最常见的用途是当您要传递多维数组(实际上是指向多维数组元素的指针)时,使用指向数组的指针

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

在另一个函数中,该函数可以称为

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

这不能仅用指针来完成。在上述函数中,传递arrprtarr[0]无效。它们是与int (*)[6]不兼容的指针类型。

通过打印尺寸,您可以看到arr*ptrptrarr[0]之间的差异

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

这将打印

12 8 12