返回嘿,我尝试了一下用C/C++和指针 while reading stuff here增加指针的函数
我自己做了一个函数在某个地方在全局数组的指针返回INT。
int vals[] = { 5, 1, 45 };
int * setValue(int k) {
return &vals[k];
}
但是我能做到这一点
int* j = setValue(0);
j++;
*j = 7;
操纵阵列
但:
*(++setValue(0)) = 42;
din't工作。 然而,请注意*setValue(0) = 42;
作品
从我的理解我调用函数,并获得一些指针我增加它,使其指向我的数组中的第二个元素。最后,我遵循指针并为它所指向的整数指定一个新值。
我发现C++指针和引用可能有点混淆,但也许有人可以解释我这种行为。
编辑: 这个问题是不是Increment, preincrement and postincrement
重复,因为它是不是与前,后递增,而是约上是一个函数的返回指针增量。
EDIT2:
调整功能
int ** setValue(int k) {
int* x = &vals[k];
return &x;
}
您可以使用
*(++(*setValue(1))) = 42;
这显然不是链接的问题的副本。 – mjs
这不是重复的吗?不应该'j = setValue(0); J ++; * j = 7;'相当于'*(++ setValue(0))= 7;'而不是'*(setValue(0)++)= 7;'(注意前后增量)。 – cpburnz
你是对的,但是既不是'*(++ setValue(0))= 7;'也不是'*(setValue(0)++)= 7;'按照@Eregrith的解释 你提到的并不是为了是真正的问题,但它是一个内部的错误 – xuma202