如何更改指向值并同时增加指针

时间:2014-06-27 05:48:38

标签: c pointers

char foo[] = "something";
char *p = foo;

是否有办法更改指向的值并仅使用一个指针将指针增加到下一个元素;?

我的意思是,将这两行的效果放在一个声明中?

 *p = 'S';
 p++;

4 个答案:

答案 0 :(得分:5)

我想你想要

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

Sample run

答案 1 :(得分:3)

这将完成这项工作:

*p++ = 'S';

答案 2 :(得分:2)

此外,如果您想先增加并获得下一个值:

*++p = 'o';

正如您在所有答案中看到的那样,您可以选择

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

*p++ = 'S';

(2)增量指针,然后取消引用:

*++p = 'o';

两者都可以根据需要用作循环增量,测试和其他不同的上下文。

答案 3 :(得分:1)

 *p = 'S';
 p++;

这已经是最佳代码了。您无法通过更改此代码来增强此代码的可读性,安全性,性能或可维护性。

如果你坚持要改变它,不能理智,那么你一定可以做到:

??=define BORK ;
??=define BOINK *
??=define SPLURK ++
??=define SPROING =

BOINK p SPROING 'S' BORK p SPLURK BORK

这是非常糟糕的代码。我相信其他人也很乐意提供更多这样的代码示例,这比你已经拥有的代码更糟糕。