我内部有一个三个函数,它们使用与代码中所示相同的输入,每当我通过三个函数后打印这些输入时,我都会得到一个“ 0”作为值。
我试图删除“ free()”,因为我认为这是因为我的输入的值获得了0,但如果这样做,代码将冻结。
int Timeout;
char passcode[20];
void configuration(int *d, char *c) {
c = malloc(20 * sizeof(char));
d = malloc(sizeof(int));
*d = *d + 1;
readn(d, c);
free(c);
free(d);
return;
}
void readn(int *d, char *c) {
c = malloc(20 * sizeof(char));
d = malloc(sizeof(int));
*d = *d + 2;
configuration_SYS(d, c);
free(c);
free(d);
return;
}
void configuration_SYS(int *d, char *c) {
char *mdp = malloc(sizeof(20));
mdp = "1234";
c = malloc(20 * sizeof(char));
d = malloc(sizeof(int));
c = mdp;
*d = *d + 3;
free(mdp);
return;
}
void main() {
configuration(&Timeout, passcode);
printf("%d\n", Timeout);
for (int i = 0; i < 20; i++) {
printf("%c", passcode[i]);
}
}
当我打印两个变量时,我期望得到一个不同于0的值。 超时应等于6,密码=“ 1234”。
答案 0 :(得分:1)
malloc()
。 malloc()
分配空间供您使用。 注意:此空间不一定要初始化(意味着数据可以是任何值)return;
。右括号将为您返回。configuration_SYS(char* abc, int* d, char* c)
,但是该函数需要三个参数。实际上,我无法编译该程序。我不确定为什么它会为您显示0。我将致力于创建一个Minimal Complete Verifiable Example