託管c++可以將陣列作為輸入/輸出引數。clr封裝c++託管介面時,可以使用cli::array<>作為輸入引數,而且c#可以獲取到c++修改後的陣列內容。
array陣列原型: [qualifiers] [cli::]array<[qualifiers]type[,dimension]> ^var;
我們只關注下模板引數:
type
託管陣列元素的型別名。可選擇的型別包括型別的控制代碼 ^名,值型別名或本地指標名(例如值型別的 *指標名)。
dimension
託管陣列的維數。預設維數為1,最大維數為 32。
var
託管陣列名。
使用時加命名空間cli,因為std裡也有array。
//宣告
string^ printvalues(cli::array^ myarr);
//定義
string^ dllforcs::robotclient::printvalues(cli::array^ myarr)
//使用
string strq = ;
string rt = teach.printvalues(strq);
messagebox.show(rt,"rt");
messagebox.show(strq[1], "strq");
//ps:我這裡把介面宣告在我的類裡的
c c 陣列傳參
在c c 中,在進行陣列傳參時,陣列的元素個數預設是不作為實參傳入呼叫函式,也就是說c c 不允許向函式傳遞乙個完整的陣列作為引數 例項 1.形式引數是乙個指標,實參包括陣列長度 1 void myfunction int param,int length 6 2.形式引數是乙個已定義大小的陣列 1...
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 因為結構體一般都很大,所以如果直接用結構體變數進行傳參,那麼函式呼叫效率就會很低。因為在函式傳參的時候需要將實參賦值給形參,所以當傳參的變數越大呼叫效率就會越低 ...