我遇到了这篇文章http://www.eskimo.com/~scs/cclass/int/sx5.html
但是这部分让我感到困惑:如果我们已经使用send_array_3
或send_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;
}
答案 0 :(得分:2)
他们说这不是那么有用:
另一个区别是这个最新版本的返回值 itoa不是非常有用。这个版本的itoa指针 返回始终与您递给它的指针相同。即使这样 itoa的版本没有返回任何正式返回值,你 仍然可以抓住它创建的字符串,因为它会 坐在你自己的阵列中(你传递给的那个) itoa)。在getline的情况下,我们还有第二件事要回归 正式返回值,即我们刚读过的行的长度。
通常你要么将内存分配给一个指针并在函数中返回数组,你将指针传递给已经分配了内存的数组,并使用任何返回值进行错误处理,这样你就可以将函数包装在一个if中。陈述或其他什么。
你甚至可以传入一个数组指针的地址作为int **(对于一个int数组)分配内存,然后不必返回它。
答案 1 :(得分:0)
你得到的只是如何处理“返回”数组问题的例子
这里有三种不同的方法,所有方法都应该有效(我会预先发送send_array_2)