函数返回的递增指针

时间:2015-04-22 15:34:00

标签: c++ c pointers

嘿,我正在尝试使用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;

1 个答案:

答案 0 :(得分:5)

你不能在非变量的东西上调用一元运算符(++)。 setValue(0)被视为值。

所以,

*(setValue(0)++) = 42;

应该是

*(setValue(0) + 1) = 42;