首页 > 解决方案 > ELI5:`int *p[]` 的数据类型是什么

问题描述

我不明白这是什么数据类型。如果它是指针或数组。请用简单的语言解释。引用书中的内容——

如果您想将一个指针数组传递给一个函数,您可以使用传递其他数组的相同方法——只需使用不带任何索引的数组名称调用函数。例如,可以接收数组 x 的函数如下所示:

void display_array(int *q[])
{
  int t;
  for(t=0; t<10; t++)
    printf("%d ", *q[t]);
}

请记住,q 不是指向整数的指针,而是指向整数指针数组的指针。因此,您需要将参数 q 声明为整数指针数组,如图所示。您不能将 q 简单地声明为整数指针,因为它不是这样。

引用:C++:完整参考,Herbert Schildt 的第 4 版,第 122-123 页

标签: c++carrayspointerstypes

解决方案


...指向整数指针数组的指针

不,这不对。q是类型int *[]。这是 C++ 中的无效(或可能不完整,取决于上下文)类型,并且仅在 C 中的某些地方有效。数组必须具有大小。

该类型int *[]是指向 的(未调整大小的)指针数组int。它本身不是指针。


混淆可能来自这样一个事实,即数组可以衰减为指向其第一个元素的指针。

例如,假设我们有这个数组:

int a[20];

当使用 plain 时a,它衰减为指向其第一个元素的指针:a等于&a[0]


推荐阅读