作者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/cn.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