簡體   English   中英

這東西給我錯誤。 C語言

[英]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變量的地址,請在其前面加上&運算符。

那是為了解決錯誤


現在,在你的代碼中,變量dvoid LerDeputados(int d)是一個局部變量,這是完全不同的dmain() 發生這種情況是因為您將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM