函数返回的递增指针

xum*_*202 3 c c++ pointers

嘿,我在这里读东西的同时用C/C++和指针进行了一些实验

我自己做了一个函数,在全局数组中的某个地方返回指向int的指针.

int vals[] = { 5, 1, 45 };

int *  setValue(int k) {
    return &vals[k];
}
Run Code Online (Sandbox Code Playgroud)

但是我能够做到这一点

int* j = setValue(0);
j++;
*j = 7;
Run Code Online (Sandbox Code Playgroud)

操纵数组

但那:

*(++setValue(0)) = 42;
Run Code Online (Sandbox Code Playgroud)

不行.但请注意*setValue(0) = 42;有效

从我的理解,我调用函数并得到一些指针,我增加它,使它指向我的数组中的第二个元素.最后,我遵循指针并为它指向的整数分配一个新值.

我发现C++指针和引用可能有些令人困惑,但也许有人可以解释我这种行为.

编辑: 这个问题不是增量,前增量和增量的重复

因为它不是关于前增量和后增量,而是关于作为函数返回的指针的增量.

EDIT2:

调整功能

int **  setValue(int k) {
    int* x = &vals[k];
    return &x;
}
Run Code Online (Sandbox Code Playgroud)

您可以使用

*(++(*setValue(1))) = 42;
Run Code Online (Sandbox Code Playgroud)

Ere*_*ith 5

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

所以,

*(setValue(0)++) = 42;
Run Code Online (Sandbox Code Playgroud)

应该

*(setValue(0) + 1) = 42;
Run Code Online (Sandbox Code Playgroud)