c++ - 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 页
解决方案
...指向整数指针数组的指针
不,这不对。q
是类型int *[]
。这是 C++ 中的无效(或可能不完整,取决于上下文)类型,并且仅在 C 中的某些地方有效。数组必须具有大小。
该类型int *[]
是指向 的(未调整大小的)指针数组int
。它本身不是指针。
混淆可能来自这样一个事实,即数组可以衰减为指向其第一个元素的指针。
例如,假设我们有这个数组:
int a[20];
当使用 plain 时a
,它衰减为指向其第一个元素的指针:a
等于&a[0]
。
推荐阅读
- for-loop - ocaml for 循环中的 let 语句
- excel - 对于具有公式的空单元格,ISBLANK 返回 False
- types - 使用单个构造函数初始化不同数据类型的可区分联合
- excel - 如何在考虑开始/结束日期的情况下计算多个月的金额?
- php - 无法将 Json 插入数据库
- c# - 如何在 Unity 中覆盖 InputField 中 END 按钮的默认行为?
- react-native - Expo 构建失败,MaxListenersExceeded
- swift - 从 URL 进行 Swift JSON 解码
- google-cloud-platform - 关于将 Google Compute VM 映像正确保存到 Google 存储桶的建议?
- bash - 为什么 Solaris 5.10 上的 GNU GAWK 3.1.5 与该模式不匹配?