[討論] 字串交換問題

作者: ting301 ( )   2014-11-13 03:07:53
以下是我小的一個函數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;
}
作者: carylorrk (carylorrk)   2014-11-13 03:49:00
string literal 是 immutable,compiler 沒有警告你不要用 char* 嗎
作者: EdisonX (卡卡獸)   2014-11-13 08:29:00
strcpy( p , "012345678");
作者: chobitskey (愛而塔)   2014-11-14 15:08:00
p = "012345678" ;這一行表示指向字面常數你原本new的記憶體位置會消失,你後面要對常數做賦值當然錯誤,如果要對指標給值,要用*

Links booklink

Contact Us: admin [ a t ] ucptt.com