C带有功能的发送/返回数组

时间:2013-10-13 23:36:29

标签: c arrays

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

但是这部分让我感到困惑:如果我们已经使用send_array_3send_array修改了数组,那么在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;
}

2 个答案:

答案 0 :(得分:2)

他们说这不是那么有用:

  

另一个区别是这个最新版本的返回值   itoa不是非常有用。这个版本的itoa指针   返回始终与您递给它的指针相同。即使这样   itoa的版本没有返回任何正式返回值,你   仍然可以抓住它创建的字符串,因为它会   坐在你自己的阵列中(你传递给的那个)   itoa)。在getline的情况下,我们还有第二件事要回归   正式返回值,即我们刚读过的行的长度。

通常你要么将内存分配给一个指针并在函数中返回数组,你将指针传递给已经分配了内存的数组,并使用任何返回值进行错误处理,这样你就可以将函数包装在一个if中。陈述或其他什么。

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

答案 1 :(得分:0)

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

这里有三种不同的方法,所有方法都应该有效(我会预先发送send_array_2)