在C++中,为什么函数不可以返回数组类型的返回值。还有为什么在C++中允许在字符串上进行整体操作。

2024-12-18 07:49:58
推荐回答(4个)
回答1:

因为C语言在设计时是以效率优先的,因为数组可能很大,整体传递很花时间,所以不允许数组整体赋值,也不能返回数组,也不作为参数传递(数组作参数时实际是将它转化成了指针,这好像不符合值传递)。
不过如果确实需要返回数组,也是有办法的,可以将其包在结构中。
struct Test
{
int buf[10];
};

struct Test returnArray()
{
struct Test tt = { 1, 2, 3, 4, 5, 6, 7, 19, 54, 32 };
return tt;
}

int main()
{
struct Test t = returnArray();
for ( int i = 0; i < 10; ++i )
{
printf( "%d\t", t.buf[ i ] );
}
}

C++当然跟C一样。
你说C++中允许在字符串上进行整体操作,那个string是一个类,不是数组。

回答2:

比如说你返回的数组是个局部变量,他的作用域只是在那个函数作用域内有效,调用函数结束后,这个局部变量就释放了,这种情况下不能返回,但是你可以在你传入进来的数组(或指针)参数上进行操作,这时的操作就是用指针的概念进行的,建议你仔细看看指针与数组这些方面,这是难点。其实上面说的基本上是C语言,在C++里面,建议用容器与迭代器进行操作,容器相当于C的数组,迭代器相当于C的指针。

回答3:

所谓规则你懂不?你怎么不问c++为什么叫c++呢!我晕…

回答4:

不可以的