我该如何解决这个问题?我想scanf()
为d的值,我该怎么做?我需要一些帮助。感谢。
#include <stdio.h>
#include <stdlib.h>
void LerDeputados(int d) {
printf("Indique o número de deputados a repartir: ");
scanf("%d",&d);
}
int main(void) {
int d;
LerDeputados(d);
printf("%d",d);
return 0;
}
答案 0 :(得分:4)
这里的问题是,当您将变量d
传递给LerDeputados
函数时,它会通过值传递,这意味着它已被复制。该值在函数内部已正确更改,但它只更改副本,更改副本当然不会更改原件。
您需要做的是通过引用传递变量。不幸的是,C没有,但它可以通过使用指针来模拟。换句话说,您需要将指向变量d
的指针传递给LerDeputados
函数。
像
void LerDeputados(int *d) { ... }
然后使用address-of运算符调用它:
LerDeputados(&d);
答案 1 :(得分:2)
您的代码中存在一些错误。首先,您需要返回scan
函数中LerDeputados(int d)
获得的值。您还需要将此值分配给您在d
中创建的main()
,将代码更改为:
#include <stdio.h>
#include <stdlib.h>
int LerDeputados() {
int d ;
printf("Indique o número de deputados a repartir: ");
scanf("%d",&d);
return d ;
}
int main(void) {
int d;
d = LerDeputados();
printf("%d",d);
return 0;
}
或者你可以使用指针(虽然需要更高级的水平)
#include <stdio.h>
#include <stdlib.h>
void LerDeputados(int* pd) {
printf("Indique o número de deputados a repartir: ");
scanf("%d",pd);
}
int main(void) {
int d;
LerDeputados(&d);
printf("%d",d);
return 0;
}
我的建议是在进一步深入编程世界之前阅读一些好的C书。
希望它有所帮助;)
答案 2 :(得分:1)
您需要阅读C ..
的基础知识将scanf()
更改为
scanf("%d",&d);
稍微解释一下
scanf()
需要存储读取值的变量的地址。要获取int
变量的地址,请先使用&
运算符。
那就是解决错误
现在,在您的代码中,d
中的变量void LerDeputados(int d)
是一个局部变量,与d
中的main()
完全不同。这种情况正在发生,因为您正在将d
的值传递给void LerDeputados(int d)
。您必须将地址传递给void LerDeputados()
。
将代码更改为
#include <stdio.h>
#include <stdlib.h>
void LerDeputados(int* d) {
printf("Indique o número de deputados a repartir: ");
scanf("%d",d);
}
int main(void) {
int d;
LerDeputados(&d);
printf("%d",d);
return 0;
}