增加char指针

Cor*_*man 4 c increment char

以下代码在第二行给出了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)

为什么不能在一次操作中完成?

Tae*_*sin 9

可能是,你只是在增加错误的东西.(*tester)++递增tester指向的数据.我相信你想要做的是*(++tester)增加指针然后取消引用它.

  • Nit:`*(tester ++)`计算`tester`指向的*增量之前*;从逻辑上讲,它等效于`a = * tester; 测试器++。如果您想要第二个字符,则可以编写`*(++ tester)`。 (2认同)

San*_*996 5

char *tester = "hello";
Run Code Online (Sandbox Code Playgroud)

测试器在这里指向一个字符串常量。它存储在只读存储器中。任何写修改都会导致未定义的行为。

正如@Taelsin指出的那样,似乎您想增加指针本身,而不是指针所指向的。您需要*(++ tester)。

经过OP的澄清:

如果您想将H递增到I,那么(* tester + 1)就可以了。