小小的C語言問題指標陣列賦值

2022-09-24 01:57:08 字數 808 閱讀 9318

先上**吧:

#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個元素的陣列,當時看到這裡就暈...