char *str = "string" ;
char *end = str;
while(*(end+1) != '\0') {
end++;
}
while(str < end) {
char temp = *str;
*str = *end;
*end = temp;
str++;
end--;
}`
编辑:
这些*str = *end
,*str++ = *end
都无效吗?
上面的代码在该行给出了错误。
Aren&#t; t str
和end
指向内存中的只读部分是否为后增量?
答案 0 :(得分:1)
char *str = "string" ;
string literal是否位于只读数据部分。
在这一行:
*str = *end;
正在尝试修改字符串,你可能会遇到段错误。
*str++ = *end
相同,两者均无效。
要使此代码生效,请更改
char *str = "string";
到
char str[] = "string";
但请注意,您不能使用*str++
,因为数组名称是常量(不可修改的左值)