gpt4 book ai didi

c++ - 函数返回的增量指针

转载 作者:太空狗 更新时间:2023-10-29 20:38:55 25 4
gpt4 key购买 nike

嘿,我正在尝试使用 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 的重复问题

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

编辑 2:

调整函数

int **  setValue(int k) {
int* x = &vals[k];
return &x;
}

你可以使用

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

最佳答案

您不能在不是变量的对象上调用一元运算符 (++)。 setValue(0) 被视为一个值。

所以,

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

应该是

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

关于c++ - 函数返回的增量指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29802345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com