gpt4 book ai didi

c++ - 解释 C++ 中的指针传递?

转载 作者:太空宇宙 更新时间:2023-11-04 15:11:20 26 4
gpt4 key购买 nike

我有一个 C++ 函数,其中有两个 int,目的是用作计数器,它们在我的主代码中的函数外部声明。我的目标是用函数执行的结果更新计数器变量。

我让他们这样声明

int cor_letters = 0;
int cor_place = 0;

然后像这样调用我的函数

res = compare(input, secret_word, &cor_letters, &cor_place);

我的 compare 函数头是:

bool compare(string user_input, string secret, int * correct_letters, int * correct_place)

在我的compare 代码中,当我得到计数​​器的最终值时,我会这样更新它们:

correct_letters = &cor_l;
correct_place = &cor_p;

在仔细阅读我的编译器错误后,我找到了这个解决方案,这似乎可行。但是,我不太明白为什么会这样。一开始,我获取两个变量的地址并将它们传递给函数。但是这个函数需要两个指针。所以指针指向传入变量的地址。

到目前为止,我似乎明白发生了什么。但它的最终分配让我感到困惑 - 指针(注意它们是函数头中的 var 名称)然后被更新为我正在使用的临时内部函数变量的地址。为什么这会给我带来值(value)?

我更像是一个视觉学习者,仅通过阅读一些文本很难掌握指针,因此如果您不介意制作一些快速文本图表来表示正在发生的事情,那就太好了。谢谢

最佳答案

我想你最终得到了

correct_letters = &cor_l;
correct_place = &cor_p;

为了让编译器停止报错。
你关于取局部变量地址的分析是正确的。

你可能想这样做

*correct_letters = cor_l;
*correct_place = cor_p;

为了给变量赋正确的值在函数的之外

关于引用(&)和取消引用(*)操作的简短备忘录。

TYPE var_a=..., var_b=...; // some variables of a chosen type
TYPE *ptr=NULL; // a pointer on such a type, but not referencing anything yet

ptr=&var_a; // now ptr memorises the address of var_a (reference operation)

var_b=*ptr; // access the value which is stored at the address memorised
// by ptr (dereference operation) in order to read it
// (here, this has the same effect as var_b=var_a; )

*ptr=var_a+var_b; // access the value which is stored at the address memorised
// by ptr (dereference operation) in order to alter it
// (here, this has the same effect as var_a=var_a+var_b; )

关于c++ - 解释 C++ 中的指针传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58498994/

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