先上**吧:
#include
#include
using namespace std ;
int replacefun(char* str, char c1, char c2);
int main(void)
int replacefun(char* str, char c1, char c2)
str++;
} return num;
}
這個程式實現的目的的是替換指定的字元,在編譯的時候沒有任何錯誤,但是在執行的時候,程式意外終止。
於是,啟動利器,單步除錯。。。跳進函式後,發現在*str到達'o'之前一切正常,不過。。到了'o'之後,結果說記憶體錯誤,無法賦值。
經過多方查詢資料和詢問,得知:
char *p="abcde";的時候,字串是不可以修改的!
而char p="abcde";的時候,字串是可以修改的!
同乙個字串,用指標定義的時候在常量區,而用陣列定義的時候在棧中。
就是剛剛上面的那個
i love you china, do you love me?
是乙個常量。
據大嬸說:
"i love you china, do you love me?"
在存放在.rodata段,該段是唯讀的,當你強行做修改的時候,當然要報錯嘍。
而定義為陣列的形式之後:就把這個字串拷貝進陣列了,對於陣列中的內容,可以隨便修改呀. 原來的字串還是不變的。。。
以上總結,漲姿勢了。
繼續c++。
小小的問題
構建之法 當教材真的很棒,沒有那麼死板,更多由故事引出,吸引眼球,讓我這麼乙個不甚喜這門專業的學生能夠看得進書,在這裡先感謝鄒欣老師,真的十分感謝。對於第一 二 十六章中講述的內容提出問題,其實我更多的是有一些不成形的看法,可能有些幼稚,若有不妥冒犯之處,還請各位老師見諒。第一章 概論 乙個心理暗示...
C語言字元指標賦值的問題
include void initialize char a,char b define array size 10 char a array size char b array size int main int argc,char argv 題意是列印兩個 this is b,即 this is...
四 C語言柔性陣列 指標賦值
一 柔性陣列 今天看了公司的 發現乙個很奇怪的問題,後來自己寫了類似 我先把 貼出來吧。include include include typedef struct dev card msg s int main void 好奇怪啊,有木有,結構體中竟然定義了乙個包含0個元素的陣列,當時看到這裡就暈...