C 如何更改定点值并同时递增指针

C 如何更改定点值并同时递增指针,c,pointers,C,Pointers,是否有一种方法可以更改所指向的值并仅使用一个元素递增指向下一个元素的指针 我的意思是,把下面这两行的效果放在一个语句中 char foo[] = "something"; char *p = foo; 我想你想要 *p = 'S'; p++; .这将完成以下工作: *p++ = 'S'; // as good as --> *(p++) = 'S'; 此外,如果要先递增并获取下一个值: *p++ = 'S'; 正如你所看到的,在所有的答案中,你有一个选择,要么 (1)取消引

是否有一种方法可以更改所指向的值并仅使用一个元素递增指向下一个元素的指针

我的意思是,把下面这两行的效果放在一个语句中

char foo[] = "something";
char *p = foo;
我想你想要

 *p = 'S';
 p++;
.

这将完成以下工作:

*p++ = 'S'; // as good as -->   *(p++) = 'S';

此外,如果要先递增并获取下一个值:

*p++ = 'S';
正如你所看到的,在所有的答案中,你有一个选择,要么

(1)取消引用,然后递增指针:

*++p = 'o';
*p++ = 'S';
(2)递增指针,然后取消引用:

*++p = 'o';
*p++ = 'S';
这两者都可以根据需要用作循环增量、测试和各种其他上下文

*++p = 'o';
这已经是最佳代码。您无法通过更改此代码来增强其可读性、安全性、性能或可维护性

如果你坚持要改变它,没有理智的理由,那么你一定能做到:

 *p = 'S';
 p++;

这是非常糟糕的代码。我相信其他人也乐于提供更多这样的代码示例,这些示例比您已有的代码要糟糕得多。

尽管按照您的意愿执行可能看起来很花哨,但这并不能提高可读性。在代码评审中,我很少会接受这种情况;p++已经是规范代码。对它的任何更改都会降低程序的可读性,也可能降低程序的安全性,因为将++与其他运算符混合使用是一种糟糕而危险的做法。括号实际上是完全多余的,但是由于混淆了代码,所以还是把括号放在那里了。所以你所能做的就是编写你不知道如何工作的代码。编写相同代码的更好方法是
p++;p='o'