嘿,我正在尝试使用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;
不行。
但请注意*setValue(0) = 42;
无效
根据我的理解,我调用该函数并获取一些指针,我将其递增以使其指向我的数组中的第二个元素。最后,我依赖指针并为它指向的整数分配一个新值。
我发现C ++指针和引用可能有些令人困惑,但也许有人可以解释我这种行为。
修改 此问题与Increment, preincrement and postincrement
不重复因为它不是关于前增量和后增量,而是关于作为函数返回的指针的增量。
EDIT2:
调整功能
int ** setValue(int k) {
int* x = &vals[k];
return &x;
}
您可以使用
*(++(*setValue(1))) = 42;
答案 0 :(得分:5)
你不能在非变量的东西上调用一元运算符(++
)。 setValue(0)
被视为值。
所以,
*(setValue(0)++) = 42;
应该是
*(setValue(0) + 1) = 42;