在c/c++中,在進行陣列傳參時,陣列的元素個數預設是不作為實參傳入呼叫函式,也就是說c/c++ 不允許向函式傳遞乙個完整的陣列作為引數
例項:1.形式引數是乙個指標,實參包括陣列長度:
1
void
myfunction
(int
*param,int length)
6}
2.形式引數是乙個已定義大小的陣列:
1
void
myfunction
(int param[10]
)27}
3.形式引數是乙個未定義大小的陣列,實參包括陣列長度:
1
void
myfunction
(int param,
int length)
6}
主函式呼叫方法:
1 #include
2using std::cout;
3using std::endl;
4 #define size 10
5class
newmessage;15
void
main()
16;19 newmessage.
myfunctionone
(newmessage.array, size)
;//方法1
20 newmessage.
myfunctionthree
(newmessage.array, size)
;//方法2
21 newmessage.
myfunctiontwo
(newmessage.array)
;//方法322}
23//1.形式引數是乙個指標,實參包括陣列長度:
24void newmessage::
myfunctionone
(int
*param,
int length)29}
3031
//2.形式引數是乙個未定義大小的陣列,實參包括陣列長度:
32void newmessage::
myfunctionthree
(int param,
int length)37}
3839
//3.形式引數是乙個已定義大小的陣列:
40void newmessage::
myfunctiontwo
(int param[size]
)//注意:這種用法跟 void newmessage::myfunctiontwo(int (¶m)[size])用法一樣
4146
}```c
如果想要傳入乙個陣列是乙個任意大小的那麼應該用以下方法:
```cpp
1template
<
int n>
2void
function
(int
(&array)
[n])
;//此方法叫非型別模板引數
//任意大小的int型陣列都可傳入
C C 陣列傳參
託管c 可以將陣列作為輸入 輸出引數。clr封裝c 託管介面時,可以使用cli array 作為輸入引數,而且c 可以獲取到c 修改後的陣列內容。array陣列原型 qualifiers cli array qualifiers type dimension var 我們只關注下模板引數 type ...
C C 函式中陣列傳參
voidf char s char str hello world cout sizeof str strlen str f str 以上 在32位平台上輸出為 12,11,4,11 原因 在c c 裡陣列作為引數時傳遞的實際上是指向陣列第乙個元素的指標,因此sizeof str 返回的是指標的大小...
C C 傳參問題
1 結構體變數作為函式形參的時候,實際上和普通變數 類似於int之類的 傳參時表現是一模一樣的。所以說結構體變數其實也是普通變數而已。2 因為結構體一般都很大,所以如果直接用結構體變數進行傳參,那麼函式呼叫效率就會很低。因為在函式傳參的時候需要將實參賦值給形參,所以當傳參的變數越大呼叫效率就會越低 ...