看板 C_and_CPP 關於我們 聯絡資訊
以下是我小的一個函數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
carylorrk: string literal 是 immutable,compiler 沒有警告你不 11/13 03:49
carylorrk: 要用 char* 嗎 11/13 03:50
EdisonX: strcpy( p , "012345678"); 11/13 08:29
chobitskey: p = "012345678" ;這一行表示指向字面常數 11/14 15:08
chobitskey: 你原本new的記憶體位置會消失,你後面要對常數做賦值 11/14 15:09
chobitskey: 當然錯誤,如果要對指標給值,要用* 11/14 15:35