[英]This thing is giving me error. C Language
我怎樣才能解決這個問題? 我想用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;
}
這里的問題是,當您將變量d
傳遞給LerDeputados
函數時,該變量將通過value傳遞,這意味着它已被復制。 該值在函數中已正確更改,但是僅更改了副本 ,更改副本當然不會更改原始值。
您需要在此處通過引用傳遞變量。 不幸的是,C沒有該功能,但是可以使用指針對其進行仿真。 換句話說,您需要將指向變量d
的指針傳遞給LerDeputados
函數。
喜歡
void LerDeputados(int *d) { ... }
然后使用地址運算符調用它:
LerDeputados(&d);
您的代碼中有一些錯誤。 首先,您需要在LerDeputados(int d)
函數中返回從scan
獲得的值。 另外,您需要將此值分配給在main()
創建的d
將代碼更改為:
#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書。
希望能幫助到你 ;)
您需要閱讀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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.