2013-10-13 61 views
0

我读到这篇文章http://www.eskimo.com/~scs/cclass/int/sx5.htmlc。发送/返回阵列功能

但是这部分让我感到困惑:什么是返回在send_array_3的数组,如果我们使用例如send_arraysend_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; 
} 
+1

这些功能不会出现在链接中 – SheetJS

回答

2

他们说它不是很有用:

另一个区别是,这个最新版本的 itoa的返回值并不是非常有用。这个版本的itoa 返回的指针总是和你交给它的指针一样。即使这 版本itoa的不返回任何东西作为其正式返回值,你 仍然可以得到它创建的字符串你的手,因为它是 在自己的阵列坐在那里(你传送到一个 itoa)。在getline的情况下,我们有第二件事返回作为 正式返回值,即我们刚刚阅读的行的长度。

通常你要么分配存储器的指针,并在函数返回数组,则在指针与存储器阵列已经分配通过,并使用用于错误处理任何返回值,这样就可以包住功能在if语句或其他内容中。

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

0

你得到了什么也只是一个例子,你如何处理

三种不同的方法在这里的“返回”阵列的问题,都应该工作(我会preffer send_array_2)