作者caxz ( )
看板C_and_CPP
標題[問題] 字串反轉
時間Wed Dec 28 21:13:26 2016
以下我自己寫了一個字串反轉的code
void reverse(char *a)
{
int size = strlen(a);
char temp;
for(int i=0; i<size/2 ; i++)
{
temp = *(a+i);
*(a+i) = *(a+size-1-i);
*(a+size-1-i) = temp;
}
}
但在輸入時
如果我宣告 char a[] = "12345" ; 舊可以成功執行
如果我宣告 char *a = "12345" 進入該段code就會fail
請問兩者差異我要如何解釋?
是因為經由 *a 的方式宣告
a會是const type 無法被修改嘛?
--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.146.206
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1482930809.A.E62.html
1F:推 purpon: *a="1235" 是會只到一個read only的區段。 12/28 21:16
2F:→ purpon: 而a[]="123456" 算是 copy assignment ,所以可以更改 12/28 21:17
3F:→ Schottky: 置底十三誡之第四誡 12/28 21:25
4F:→ stupid0319: 宣告char* a的話,修改前呼叫VirtualProtect 12/28 21:31
5F:→ TobyH4cker: 這不是一個好的workaround 12/28 22:40
6F:推 ko27tye: string的解法方便很多 不用string嗎 12/28 23:12
7F:→ Schottky: 這是日據時代很多公司的熱門面試題 12/28 23:26