最近使用mfc 寫乙個對話方塊程式,發現乙個非常煩人的問題,就是我在乙個類中的cstring型別的變數是從ini檔案讀出的,在另類中呼叫這個全域性變數時候,將這個變數使用多次後,變數的內容發生了變化,變成了亂碼
舉個例子
class a{
cstring stra = _t"hello";
classb{
cstring strb = a.stra ;
//這時候中斷strb檢視的值是正確的
string b = tostring(strb);//就是在這裡加了中斷後,進入tostring函式,發現傳進來的值變成了亂碼
//還有一種現象就是在呼叫外部類變數進行運算時候也會出問題
cstring strc =strb + _t("world")//這裡計算出來的strc 值為「world」;
就這個問題找了好久沒有找到原因,只有解決辦法使用format格式化一下
cstring strb ;
strb.format(_t("%s"),a.stra );
C 中的傳值 傳引用
在c 中預設是按值傳遞,什麼是按值傳遞呢?我們都知道,在引數傳遞過程中,形參和實參占有不同位置的儲存空間,被呼叫過程在執行過程中,改變了形參的值,但不會影響呼叫過程 主調過程 的實參值。所以,當被呼叫過程執行結束返回到呼叫過程,實參還是呼叫之前的值。因此為了保護實參不受被呼叫過程的影響,應選用按值傳...
C 中的傳值 傳引用
在c 中預設是按值傳遞,什麼是按值傳遞呢?我們都知道,在引數傳遞過程中,形參和實參占有不同位置的儲存空間,被呼叫過程在執行過程中,改變了形參的值,但不會影響呼叫過程 主調過程 的實參值。所以,當被呼叫過程執行結束返回到呼叫過程,實參還是呼叫之前的值。因此為了保護實參不受被呼叫過程的影響,應選用按值傳...
C 中傳值,傳指標,傳引用的區別
自 當呼叫函式時,傳遞的引數有傳值 傳指標 傳引用這三種形式。直接傳值是直接開闢了乙個跟主函式實參一樣的空間 位址不一樣 裡面存放了了跟實參一樣大小的值,就相當於數值大小相同但是位置不同。你在這個呼叫函式裡使用這個一樣大小的值,完全不影響主函式實參的值。就好比主函式的空間就是一棟樓,裡面的乙個房間裡...