[討論] 字串交換問題

看板C_and_CPP作者 ( )時間9年前 (2014/11/13 03:07), 編輯推噓0(006)
留言6則, 3人參與, 最新討論串1/1
以下是我小的一個函數swap_part 目的是將字串內的兩個變數作交換, 但我每執行後系統都會出現 "已停止運作"之消息,然後直接當掉 請問我有哪寫的不妥嘛??? void swap_part(char *p, int m, int n) { char temp ; temp = *(p+m); *(p+m) = *(p+n); *(p+n) = temp; } int main() { char *p = new char[10]; p = "012345678" ; cout<<"p= "<< p <<endl; swap_part(p,3,5); swap_part(p,4,6); cout<<"p= "<< p <<endl; system("pause"); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.240.229.89 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1415819276.A.BE4.html

11/13 03:49, , 1F
string literal 是 immutable,compiler 沒有警告你不
11/13 03:49, 1F

11/13 03:50, , 2F
要用 char* 嗎
11/13 03:50, 2F

11/13 08:29, , 3F
strcpy( p , "012345678");
11/13 08:29, 3F

11/14 15:08, , 4F
p = "012345678" ;這一行表示指向字面常數
11/14 15:08, 4F

11/14 15:09, , 5F
你原本new的記憶體位置會消失,你後面要對常數做賦值
11/14 15:09, 5F

11/14 15:35, , 6F
當然錯誤,如果要對指標給值,要用*
11/14 15:35, 6F
文章代碼(AID): #1KOx0Cla (C_and_CPP)