C 傳遞字串給C 不能用ref限定

2021-09-20 22:28:29 字數 537 閱讀 8733

場景

//dll中申明 

extern 「c」 __declspec(dllexport) int winapi test(char astr2,char bstr2) 

dll 需傳入char *型別 

[dllimport(「mydll.dll")] 

//傳入值 

public static extern int mysum (ref string astr1, ref string bstr1);

說明c#呼叫的時候,指定了ref,導致傳遞的字串在c++中提示字串無效

解決去掉ref

資料ref 關鍵字通過引用(而非值)傳遞引數。 通過引用傳遞的效果是,

對所呼叫方法中的引數進行的任何更改都反映在呼叫方法中。 例如,如果呼叫方傳遞本地變數表示式或陣列元素訪問表示式,

所呼叫方法會將物件替換為 ref 引數引用的物件,然後呼叫方的本地變數或陣列元素將開始引用新物件。

傳遞到 ref 形參的實參必須先經過初始化,然後才能傳遞。

通過上述資料,還是沒有理解

不能用字串給字元陣列賦值

c和指標 pointers on c 8.1.11 乙個字串,如 hello 一般為字串常量,可以用它對字元指標賦值,或初始化,相當於把這個字串常量的首位址賦給這個指標,如 char p hello 或者 char p p hello 但是,當用 hello 給字元陣列作初始化時,hello 並非乙...

c函式傳遞字串

把具有相同型別的若干變數按有序的形式組織起來,這些按序排列的同類資料元素的集合稱為陣列。按陣列元素的型別不同,陣列又可分為數值陣列 字元陣列 指標陣列 結構陣列等各種類別,因此,字元陣列是陣列的一種。字元陣列實際上是一系列字元的集合,也就是字串 string 由此可得 在函式中傳遞乙個字串與傳遞乙個...

C 使用SendMessage傳遞字串

在c 中使用sendmessage,原本以為很簡單的事,卻處處碰壁。在定義訊息時忘記了使用者可定義訊息的邊界值,在網上一陣瘋找後來發現是const int wm user 0x400。接著是sendmessage的lparam型別不能決定 預設是intptr 我想傳送字串資訊,就將它定為了strin...