gpt4 book ai didi

c++ - 您如何理解错误 : cannot convert from 'int []' to 'int []'

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:13 25 4
gpt4 key购买 nike

编译以下代码时:

void DoSomething(int Numbers[])
{
int SomeArray[] = Numbers;
}

VS2005 编译器报错 C2440: 'initializing' : cannot convert from 'int []' to 'int []'

我知道它实际上是在尝试将指针转换为一个无法工作的数组。但是,您如何向学习 C++ 的人解释该错误?

最佳答案

说有类型和不完全类型:

struct A;

是一个名为 A 的结构的不完整类型。虽然

struct A { };

是一个名为 A 的结构的完整类型。第一个的大小尚不清楚,而第二个的大小已知。

有不完整的类类型,如上面的结构。但也有不完整的数组类型:

typedef int A[];

那是一个名为 A 的不完整数组类型。它的大小尚不清楚。您不能从中创建数组,因为编译器不知道数组有多大。但是您可以使用它来创建一个数组,如果您立即初始化它:

A SomeArray = { 1, 2, 3 };

现在,编译器知道数组是一个包含 3 个元素的 int 数组。如果你试图用指针初始化数组,编译器不会比以前更聪明,并拒绝,因为那不会给它要创建的数组的大小。

关于c++ - 您如何理解错误 : cannot convert from 'int []' to 'int []' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/535713/

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