当我们只有一个指针数组时,拥有指向数组的指针有什么用。
我们可以使用大小为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;
}
答案 0 :(得分:1)
指向数组的指针最常见的用途是当您要传递多维数组(实际上是指向多维数组元素的指针)时,使用指向数组的指针
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