gpt4 book ai didi

C++ 指针,++ 运算符行为

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

所以我在某处读到,如果我们有一个指针 p,并且一些值 i 和 j 一个接一个地定义,那么堆栈上的那些值将一个接一个地然而,至少对我来说似乎并非如此。

int i = 10;
int j = 20;
int *p = &i;
p++;
(*p) = 30;
std::cout << i << " " << j << " " << (*p) << "\n" ;

相反,它会打印这些值 10 20 30如果我评论 (*p) = 30; 而不是在 *p 中将是一个空地址。

我认为++ 运算符在这种情况下会将我的引用从 i 更改为 j 并且 (*p) 将更改j 的值,但显然不是这样。

所以我想知道他们是什么意思?

最佳答案

您的代码的行为未定义

指针运算仅在数组内有效。您不能通过增加指向另一个对象的指针并取消引用该指针来访问一个对象。更详细一点,定义了p++(一个对象可以被认为是一个单一的元素数组,你可以设置一个指向数组末尾的指针),但是随后的解引用是未定义。

关于C++ 指针,++ 运算符行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56442753/

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