以下代码在第二行给出了seg错误:
char *tester = "hello";
char a = (*tester)++; // breaks here
printf("Char is %c\n", a);
Run Code Online (Sandbox Code Playgroud)
以下代码有效:
char *tester = "hello";
a = *tester;
a++;
printf("Char is %c\n", a);
// prints i
Run Code Online (Sandbox Code Playgroud)
为什么不能在一次操作中完成?
可能是,你只是在增加错误的东西.(*tester)++递增tester指向的数据.我相信你想要做的是*(++tester)增加指针然后取消引用它.
char *tester = "hello";
Run Code Online (Sandbox Code Playgroud)
测试器在这里指向一个字符串常量。它存储在只读存储器中。任何写修改都会导致未定义的行为。
正如@Taelsin指出的那样,似乎您想增加指针本身,而不是指针所指向的。您需要*(++ tester)。
经过OP的澄清:
如果您想将H递增到I,那么(* tester + 1)就可以了。