「陣列作為實參」的情況

2021-08-30 14:54:21 字數 564 閱讀 2464

陣列型別為const 指標,且附帶元素的型別和陣列長度資訊,僅當陣列元素的型別和陣列長度均相同時,兩個陣列型別才相同。比如,有「int a[16], b[15]」,a,b不是同乙個型別,因為陣列的長度不同。

當實參為陣列型別時,比如有「int a[16];」,以a 作為實參,如果形參是非引用型別,比如「int pa[n]」,n為值任意的常量表示式,那麼編譯器將pa 處理為int * 型別,而不是陣列型別int [n]。如果形參是引用型別,比如「int (&pa)[n]」,那麼編譯器將pa 處理為陣列型別:int [n],這時編譯器會檢查實參與形參型別是否匹配,即這兩個陣列型別的元素型別陣列長度必須相同,否則實參與形參型別不匹配導致編譯出錯。

示例如下:

void fcn1_1(int (&a)[16])

void fcn1_2(int (&a)[15])

void fcn1_3(int (&a)[17])

void fcn2_1(int a[16])

void fcn2_2(int a[15])

void fcn2_3(int a[17])

int main()

陣列作為函式實參

陣列作為函式實參 c語言中陣列作為函式實參時,編譯器總是將其解析為指向陣列首元素位址的指標 位址呼叫 原因 我們知道c 語言函式的呼叫有傳值和傳位址呼叫。假設 c語言對陣列採用傳值呼叫 對實參作乙份拷貝,傳遞給被呼叫函式,函式不能修改實際實參值,而只能改變其拷貝 然後如果拷貝整個陣列,則在時間和空間...

將陣列作為實參傳遞

在c 中我們應該少用指標,多用引用,原因請大家自行搜尋。在傳遞陣列的時候我們需要格外注意,先讓我們看乙個簡單的範例。passarray.cpp 定義控制台應用程式的入口點。include stdafx.h include using namespace std template void func1...

流作為函式實參

include include include include 使用setw必須 using namespace std void make neat ifstream messy file,ofstream neat file,int number after decimalpoint,int f...