我有一个相互嵌套的三个函数,它们使用与我的代码中所示相同的输入,每次在传递这三个函数后打印输入时,我都会得到“0”作为值。
我尝试删除“free()”,因为我认为这是因为我的输入得到 0 作为值,但如果我这样做,代码就会卡住。
char passcode[20];
void configuration(int **d, char *c) {
*d = malloc(sizeof(int));
**d = 1;
readn(*d, c);
return;
}
void readn(int *d, char *c) {
*d = 2;
configuration_SYS(d, c);
return;
}
void configuration_SYS(int *d, char *c) {
strcpy(c, "1234");
*d = 3;
return;
}
void main() {
int *Timeout;
configuration(&Timeout, passcode);
printf("%d\n", *Timeout);
printf("%s", passcode);
}
当我 printf 两个变量时,我期望得到一个不同于 0 的值。 超时应等于 6,密码 =“1234”。
最佳答案
- 您不需要每次使用指针时都使用
malloc()
。malloc()
分配空间供您使用。 注意:此空间不一定已初始化(意味着数据可以是任何值) - 无需在 void 函数末尾添加
return;
。右大括号将为您返回。 - 您使用两个参数调用
configuration_SYS(char* abc, int* d, char* c)
,但该函数需要三个参数。
事实上,我无法编译这个程序。我不知道为什么它会为你打印 0。我会努力创建一个 Minimal Complete Verifiable Example
关于c - 函数不断返回0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53952016/