0

我遇到了这篇文章http://www.eskimo.com/~scs/cclass/int/sx5.html

但这部分让我感到困惑:send_array_3如果我们已经使用send_arrayor修改它,那么返回数组有什么意义send_array_2?我们不需要退货,对吧?

void send_array(int a[], int n) {
    for (int i=0; i<n; i++)
        a[i] = i*i;
}

void send_array_2(int* a, int n) {
    for (int i=0; i<n; i++)
        a[i] = i*i;
}

int* send_array_3(int a[], int n) {
    for (int i=0; i<n; i++)
        a[i] = i*i;
    return a;
}
4

2 回答 2

2

他们说它没那么有用:

另一个区别是这个最新版本的 itoa 的返回值并不是非常有用。此版本的 itoa 返回的指针始终与您传递给它的指针相同。即使这个版本的 itoa 没有返回任何东西作为它的正式返回值,你仍然可以得到它创建的字符串,因为它就在你自己的数组中(你传递给 itoa 的那个)。在 getline 的情况下,我们有第二件事要作为正式的返回值返回,即我们刚刚读取的行的长度。

通常,您要么将内存分配给指针并在函数中返回数组,然后将指针传递给已分配内存的数组,并使用任何返回值进行错误处理,因此您可以将函数包装在 if 语句或其他内容中.

您甚至可以将数组指针的地址作为 int ** (对于 int 数组)分配内存,然后不必返回它。

于 2013-10-13T23:45:17.780 回答
0

你得到的只是例子,你可以如何处理“返回”数组的问题

这里有三种不同的方法,都应该有效(我更喜欢 send_array_2)

于 2013-10-13T23:43:29.310 回答