2013-10-13 108 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)