与指针增量混淆

时间:2015-10-02 21:58:02

标签: c pointers

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 strend指向内存中的只读部分是否为后增量?

1 个答案:

答案 0 :(得分:1)

char *str = "string" ;

string literal是否位于只读数据部分。

在这一行:

*str = *end;

正在尝试修改字符串,你可能会遇到段错误。

*str++ = *end相同,两者均无效。

要使此代码生效,请更改

char *str = "string";

char str[] = "string";

但请注意,您不能使用*str++,因为数组名称是常量(不可修改的左值)