2016-11-07 111 views
-2

具有陣列傳遞參數:通過引用

int a = { 1 ,2 , 3} 

我可以以修改它傳遞一個指針的函數。

int modify(int *a){ 
    a[0] = 10; 
} 

但是爲什麼我不能傳遞一個int引用來修改它呢?例如

int modify(int &a){ 
    a[0] = 10; 
} 

編譯器如何使用引用進行操作?通過使用指針,我們傳遞內存(在這種情況下,是數組的第一個元素)。但是參考文獻會發生什麼?例如,爲什麼這樣工作?

vector<int > a 

void mod(vector<int> & a){ 
     a[0] = 10; 
    //a.push_back(10) 
} 
+1

'int modify(int&a){ a = 10; }' – nwp

+1

你沒有數組。它應該是'int a [] = {1,2,3};' –

回答

0

但爲什麼不能我通過引用爲int對其進行修改?

你當然可以。

語法需要有點不同。

int modify(int (&a)[3]){ 
    a[0] = 10; 
} 

使用

int modify(int *a){ ... } 

int modify(int (&a)[3]){ ... } 

之間的區別在於,可以調用使用不同大小的陣列中的第一個,而第二一次只能與陣列被稱爲大小3.