gpt4 book ai didi

c - 传递参数不可编辑

转载 作者:行者123 更新时间:2023-11-30 15:29:58 25 4
gpt4 key购买 nike

为什么传递参数无法更改。我有一些功能

void read_errorlog (int success, char *names, int empty) {

这是从另一个地方调用的,其中

  const char *names[2] = {"errorlog.txt","errorlog1.txt"}
int empty = 0;
int counter = 0;
int success = 0;

所有变量都已初始化。在 void read_errorlog 内部,int successintempty 都不会更改这些值。我这样做就像 empty = 0;我用read_errorlog(一,二,三)调用该函数。我现在知道,我必须传递 int 变量的地址。谢谢。

最佳答案

这就是按值调用(您正在执行的操作)和“按引用调用”(您应该执行的操作)的区别。

当您调用函数read_errorlog时,传递的参数实际上是您作为参数提供的变量的副本。因此,当您在函数内执行 empty=0 时,您会更改副本的值,但不会更改原始变量的值。

对于“通过引用调用”,您需要传递一个指向 empty 的指针和一个指向 success 的指针,而不是它们的值。这可以按如下方式完成:

void read_errorlog (int* success, char *names, int* empty) {
*empty = 0;
*success = 1;
}

read_errorlog(&success, names, &empty);

关于c - 传递参数不可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25937610/

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