gpt4 book ai didi

c++ - 指向指针算术的指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:42 26 4
gpt4 key购买 nike

谁能解释一下下面代码的输出

char* a[] = {"ABC123", "DEF456", "GHI789"};
char **p = a;
cout<<++*p<<std::endl;
cout<<*p++<<std::endl;
cout<<++*p<<std::endl;

输出:

BC123
BC123
EF456

令我困惑的是++*p 和 *p++ 的不同行为。我期待的输出是:

ABC123
DEF456
GHI789

最佳答案

也许这会有所帮助。你的例子大致等同于:

++(*p);
cout << *p << '\n';

cout << *p << '\n';
++p;

++(*p);
cout << *p << '\n';

没有括号,*p++ 被解析为*(p++),因为后缀增量比解引用运算符具有更高的优先级。不过,增量仍然在整个表达式之后完成。

另一方面,前缀增量和 * 具有相同的优先级,因此 ++*p 被从右到左解析为 ++(*p) .知道前缀增量必须在表达式之前完成,您现在可以将整个图片放在一起。

关于c++ - 指向指针算术的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9359485/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com