C 給函式傳陣列引數

2021-07-11 05:43:04 字數 1428 閱讀 8531

from:

在c++中,如果要給乙個函式傳入乙個陣列,一般都是傳入兩個引數乙個陣列指標和乙個陣列大小 例:

void print_1 (

int n, int *datas

)std::cout << std::endl;

}對這個函式,我們可以這樣使用它:

const int n = 3;

int datas[n] = ;

print_1 (n, datas);

不過對這個函式,我們可能會傳錯 n 的大小,而在執行時可能出錯,例如這樣使用:

const int n = 3;

int datas[n] = ;

print_1 (

4, datas);

有些時候,我們希望某函式只接受指定大小的陣列,例如我們希望只接受大小為 3 的陣列:

void print_2 (

int datas[3]

)std::cout << std::endl;

}但實際上,上面的函式不能正確工作:

const int n = 3;

int datas[n] = ;

print_2 (datas);

int datas2[n - 1] = ;

print_2 (datas2);

也就是我們傳入了乙個大小為 2 的陣列,編譯器沒報任何錯誤,我們的函式介面 print_2 (int datas[

3]) 中的 3 沒起任何作用

事實上,上面的函式介面應該這樣寫:

void print_3 (int 

(&datas)

[3])

std::cout << std::endl;

}這時,我們如果這樣使用是正確的

const int n = 3;

int datas[n] = ;

print_3 (datas);

而我們如果這樣使用,編譯器會報錯

int datas2[n - 1] = ;

print_3 (datas2);

在上面這個例子(print_3)的基礎上,我們可以使用模板進行泛型實現

template

void print_4 (int (&datas)[n])

std::cout << std::endl;

}這時候,我們可以傳遞任意大小陣列,而不擔心給函式傳入了錯誤的引數

const int n = 3;

int datas[n] = ;

print_4 (datas);

int datas2[n - 1] = ;

print_4 (datas2);

假如我們給傳了錯誤引數,函式將會報錯

const int n = 3;

int datas[n] = ;

print_4<

4> (datas);

C 給函式傳陣列引數

在c 中,如果要給乙個函式傳入乙個陣列,一般都是傳入兩個引數乙個陣列指標和乙個陣列大小 例 void print 1 int n,int datas std cout std endl 對這個函式,我們可以這樣使用它 const int n 3 int datas n print 1 n,datas...

C 給函式傳陣列引數

在c 中,如果要給乙個函式傳入乙個陣列,一般都是傳入兩個引數乙個陣列指標和乙個陣列大小 例 void print 1 int n,int datas std cout std endl 對這個函式,我們可以這樣使用它 const int n 3 int datas n print 1 n,datas...

c 中如何給函式傳遞陣列引數

在c 中,如果要給乙個函式傳入乙個陣列,一般都是傳入兩個引數乙個陣列指標和乙個陣列大小 例 void print 1 int n,int datas std cout std endl 對這個函式,我們可以這樣使用它 const int n 3 int datas n print 1 n,datas...