gpt4 book ai didi

c++ - C++中指针数组的语法

转载 作者:行者123 更新时间:2023-11-28 05:10:45 24 4
gpt4 key购买 nike

所以,我看到动态分配指针数组的做法是这样的:

int **array = new int *[10];

事实上,使用语法:

int *array[] = new int *[10];

结果出错:

/Users/Malachi/Projects/playground/playground.gcc/src/pgccc-5/main.cpp:8: error: definition of variable with array type needs an explicit size or an initializer
const char* test_array[];
^

无论如何,我总是更喜欢使用纯指针语法。然而,困扰我的是这样的行:

int main(int argc, char *argv[])

有效。我习惯于将空数组括号 [] 或多或少别名化为指针类型。在我看来,char *argv[] 受到与我的 int *array[] 几乎完全相同的约束,所以为什么语法在一种情况下允许但不允许另一个?

编辑:看来 int array[] = new int[10] 的更简单情况表现出相同的行为

最佳答案

这个:

int *array[] = new int *[10];

不是有效语法。原因是左侧的类型是一个指向 int 的指针数组,而右侧的类型是一个指向 int 的指针。由于左右边类型不同,所以赋值是不合法的。

另一方面,数组会退化为指针。这意味着,当您以以下形式声明函数时:

void foo(int* arr[])

编译器将其视为:

void foo(int** arr)

上述规则仅适用于函数,不适用于第一个示例中的赋值。

关于c++ - C++中指针数组的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43552910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com