C 陣列的引用,作形參或是作返回型別,不用指標

2022-09-17 04:12:10 字數 1994 閱讀 1317

一、陣列的引用

切入:可以將乙個變數定義成陣列的引用(這個變數和陣列的型別要相同)

形式:

int odd[5] = ;

int (&arr)[5] = odd;        //中括號內的數一定要和所引用的陣列的維度一樣

cout << arr[3] << endl;     //等價於odd[3]

解讀:注意上面**中的形式,因為arr引用了陣列odd,故arr變成了陣列的別名。

二、陣列的引用——作為形參

難點:對應形參/實參的寫法、怎麼運用該形參

寫法:

#include #include #include #include #include #include using namespace std; 

void print(int (&arr)[5])

int main()

; print(odd);

return 0;

}

運用:把該形參名視為所繫結的陣列的名字使用即可。

優點:節省記憶體消耗,不用拷貝乙份陣列,直接使用原陣列(甚至可以修改原陣列)。

助記:我們不妨以string物件的引用來輔助記憶,因為string就像是乙個字元陣列,只是它沒有確定的容量。

#include #include #include #include #include #include using namespace std; 

//void print(int (&arr)[5])

void print(string &arr) //相比陣列,只是少了乙個[維度]

int main()

; string ss = "hello world";

// print(odd);

print(ss);

return 0;

}

三、陣列的引用——作為返回型別

難點:對應返回型別的寫法、怎麼使用該返回的引用

知識:因為陣列不能被拷貝,所以函式不能返回陣列,但可以返回陣列的引用(和陣列的指標)

可先學習一下返回陣列的指標,再來看返回陣列的引用

返回陣列的引用的寫法可以說和返回陣列的指標是一模一樣

寫法:

/*    題目:編寫乙個函式的宣告,使其返回包含10個string物件的陣列的引用    */ 

//不用型別別名

string (&func(形參))[10];

//型別別名

using arrs = string[10];

arrs& func(形參);

//尾置返回型別

auto func(形參) -> string(&)[10];

//decltype關鍵字

string ss[10];

decltype(ss) &func(形參);

運用:返回乙個陣列的引用怎麼用??

#include #include #include #include #include #include using namespace std; 

int odd = ;

int even = ;

//int (&func(int i))[5]

//auto func(int i) -> int(&)[5]

decltype(odd) &func(int i)

int main()

助記:既然返回的陣列的引用,而它又只是乙個名字(不帶維度),我們把它視為所引用的陣列(在該函式內返回的那個陣列)的別名即可。

補充:返回的是陣列的引用,那麼函式裡也應該返回的是陣列!

助記:

int &func(int a, int b)

//函式呼叫結束後,返回b的引用,返回引用的優點在於不用拷貝乙個值返回

int main()

指標的引用作形參

include stdafx.h include iostream using namespace std typedef struct pos pos void func pos p 指標的引用 int tmain int argc,tchar argv pos p cin p.x p.y pos...

C 中一般引用作形參和常引用作形參的問題

常數沒有位址,對於常數的引用必須是個const 同樣的,如果x是個const的話,int g int a 也會報錯 結論 如果不需改變形參的值又不用作引數傳遞 實參賦值給形參 用常引用作形參適應面最廣 實參可以是變數也可以是常量。如果需要改變形參的值,用引用作形參最合適 實參必須是變數不允許是常量。...

常指標 常引用作為形參和返回值

include using namespace std const int n 10 intsum1 const int p return sum void sum2 const int p,int s 常量指標,普通指標,無返回 const int sum3 const int p,int s 指...