可能重複:
Why does simple C code receive segmentation fault?字符串操作用C問題
嘿大家,我敢肯定,這是一個非常基本的問題,但顯然我在這裏我不是很瞭解的東西。
在冬假期間,我一直在C玩弄很多東西,只是遇到了一些我認爲會工作的東西,但給我一個分段錯誤。
如果我聲明一個字符串爲: char name [5] =「Mike」; 我可以操縱字符串:*(name + 1)='a';這工作正常,名稱變成「Make」。
如果我聲明爲: char * name =「Mike」; 然後嘗試相同的操作:*(name + 1)='a';我遇到了分段錯誤。爲什麼我不能那樣做?如果我malloc空間的字符串:char * name =(char *)malloc(5 * sizeof(char));然後將該字符串複製到名稱:strcpy(name,「Mike」);我可以像上面那樣操縱它。 *(name + 1)='a';作品。 (char *)malloc(5 * sizeof(char)); char * name =「Mike」'和char * name =(char *)malloc(5 * sizeof(char))之間有什麼不同?的strcpy(姓名, 「邁克」);?他們是不是都只是指向包含字符串的內存?
不好意思的問題!
同樣的問題已經被問過很多次,例如http://stackoverflow.com/questions/164194 – ephemient