C带函数的发送/返回数组

C带函数的发送/返回数组,c,arrays,C,Arrays,我偶然发现了这篇文章 但这一部分让我困惑:如果我们已经在使用send\u array或send\u array\u 2修改数组,那么在send\u array\u 3中返回数组有什么意义?我们不需要退货,对吗 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<

我偶然发现了这篇文章

但这一部分让我困惑:如果我们已经在使用
send\u array
send\u array\u 2
修改数组,那么在
send\u array\u 3
中返回数组有什么意义?我们不需要退货,对吗

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;
}
void send_数组(int a[],int n){

对于(inti=0;i您得到的,这里只是一些示例,说明如何处理“返回”数组的问题


这里有三种不同的方法,所有方法都应该可以工作(我会优先选择send_array_2)

他们说没有那么有用:

另一个区别是,此最新版本的 itoa不是很有用。这个版本的itoa使用的指针 返回值始终与您递给它的指针相同。即使 itoa的版本没有返回任何东西作为它的正式返回值,您知道吗 仍然可以得到它创建的字符串,因为 坐在你自己的阵列中(你传递给的阵列) 在getline的案例中,我们还有第二件事要作为 形式返回值,即我们刚刚读取的行的长度

通常,您可以将内存分配给指针并在函数中返回数组,将指针传递给已分配内存的数组,并使用任何返回值进行错误处理,这样您就可以将函数封装在if语句或其他任何语句中


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

这些函数不会出现在链接中