C 與C 互動的引數傳遞

2021-06-25 18:32:00 字數 541 閱讀 9925

c++、c#互動有三種方式:

1 com, 在c++這邊宣告引數的時候,byte就是c#的byte,bstr就是c#的string,想做出參就加*,byte*就是c#的ref byte,bstr* 就是 ref string,但是如果要傳byte就麻煩了,千萬別琢磨著轉成string用bstr傳,怎麼都不對,只有用bitconverter兩個位元組兩個位元組的轉在c++這邊才能保持正確,但是太慢了,轉幾m的東西要幾十分鐘,所以果斷variant,在c#端會翻譯成object,用c#marshal分配一段unmanaged的記憶體,用intptr直接傳過來就好了,c++端會看到引數型別是vt_int,直接用variant裡int就是位址,又快又方便。

2 p-invoke,引數比較簡單,直接上網搜一下c++和c#變數對應表就好了,很多,這裡和com有一點不同,比如byte*會直接翻譯為intptr,方便很多。(對於是用com還是p-invoke,見仁見智吧)。

3 c++/cli,沒什麼好說的了,直接marshal轉換各種型別就ok了,唯一麻煩的就是string轉換的時候只能用char* 不能用const char*。

引數傳遞與引用(C )

引用 是識別符號的別名 例如 int i,j int ri i 定義int引用ri,並初始化為變數i的引用 j 10 ri j 相當於i j c 標準中提供了兩種主要的方法 1 如果所有的實參型別相同,可以傳遞乙個名為initializer list的標準庫型別 2 如果實參的型別不同,我們可以編寫...

c 引數傳遞

引數型別分為int,ref,out三種,預設為int.int型別在字方法中修改了對應變數後,主方法中的值不會發生變化.ref型別在方法中修改了對應變化後,主方法中的值也會發生變化.out主方法中對應的變數不需要初始化.例子 using system using system.collections....

C 引數傳遞

2.指標與引用區別 3.引數為指標的指標或指標的引用 將實參複製乙份給形參,形參為函式的區域性變數,因此函式對形參操作對實參沒有影響。若傳遞物件會產生物件副本,會呼叫拷貝建構函式,操作完後要呼叫析構函式。形參為指向實參位址的指標,其也算一種按值傳遞,只不過是將實參的位址作為引數傳遞給形參,因此函式對...