传递参数无法编辑

时间:2014-09-19 15:39:08

标签: c parameters

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

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 success,而非int empty都没有更改值。 我这样做empty = 0; 我用read_errorlog (one, two, three)调用函数。我现在得到了,我必须传递int变量的地址。谢谢。

1 个答案:

答案 0 :(得分:1)

这是按值调用(您正在做什么)和"按引用调用" (你应该做什么)。

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

对于"通过引用"进行调用,您需要将指针传递给empty并指向success而不是其值。这可以按如下方式完成:

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

read_errorlog(&success, names, &empty);