gpt4 book ai didi

c++ - 使用指针作为函数的数据

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:06:29 25 4
gpt4 key购买 nike

好的,所以我们有一个名为 incr 的函数,它只是将数字加 1,然后返回新值,但以指针作为参数:

int incr(int *arg) 
{
*arg++;
return *arg;
}

所以如果我们写如下:

int main()
{
int i = 1, j = 0;
cout << j << endl;
int* p_i = &i;
j = incr(p_i); // changes both i and j
cout << i << ", " << j << endl; //should print 2, 2
return 0;
}

由于我们使用变量i 的指针作为参数,如果incr 函数中的*p_i 发生了一些变化,那么改变将会当 incr 完成时,对 i 是永久性的。此外,因为我们设置了 j=incr(i) 并且我们不返回 p_i 本身,但它的内容(现在是 i 的 2 值),j 现在应该是 2。但由于某种原因,结果是这样的:

1, -858993460

我根本不明白为什么。也许我在这个洞指针/函数调用的事情中理解了一些错误。任何帮助都会得到帮助

最佳答案

这是一个 operator precedence问题。

operator++operator* 具有更高的优先级,因此您要递增地址然后取消引用它.

(*arg)++; 

将解决您的问题。

关于c++ - 使用指针作为函数的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41939713/

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