因此,我在某处读到,如果我们有一个指针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
而the将更改my(*p)
的值j
,但是显然不是这种情况。
所以我想知道它们是什么意思?
您的代码的行为是不确定的。
指针算术仅在数组内有效。您不能通过增加指向另一个对象的指针并取消对该指针的引用来访问该对象。更详细一点,它p++
是定义的(一个对象可以视为一个元素数组,并且可以将指针设置为指向数组末尾的指针),但是后续的取消引用是未定义的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句