为什么传递参数无法改变。 我有一些功能
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变量的地址。谢谢。
答案 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);