2013-09-23 36 views
-2

在此代碼中,main()不會識別被調用函數的變量結果,在此例中爲pro_afai,即 。Cprogramming - Main不識別被調用函數的變量結果。

#include <stdio.h> 

在這裏,我創建函數pro_afai

int pro_afai(int x,int y){ 
int pro,afai; 
pro=x+y; 
afai=x-y;} 

main(){ 

在這裏,我想親= 0和AFAI = 0申報到主 但它仍然不工作,因爲它打印0,0。 printf不會從函數中獲取結果。

int i,j; 
int pro,afai; 
printf("2 num:"); 
scanf("%d %d",&i,&j); 
pro_afai(i,j); 
printf("\npro=%d\nafai=%d",pro,afai);}) 

但printf不會打印正常的結果。 我該如何解決?

+2

請Google通過參考電話致電並按價值致電。 – Gangadhar

+0

可能的重複[如何通過值調用和調用引用工作在C?](http://stackoverflow.com/questions/1659302/how-does-call-by-value-and-call-by-reference- work-in-c) – jev

+0

這似乎不是傳遞引用與傳遞值的問題,它似乎更像是一個不理解變量範圍的問題。 –

回答

3

您需要將指針傳遞給proafaipro_afai功能:

int pro_afai(int* pro, int* afai, int x,int y){ 
    *pro=x+y; 
    *afai=x-y; 
} 

int main() 
{ 
    int i,j; 
    int pro,afai; 
    printf("2 num:"); 
    scanf("%d %d",&i,&j); 
    pro_afai(&pro, &afai, i,j); 
    printf("\npro=%d\nafai=%d",pro,afai); 
    return 0; 
} 

在現有的代碼,有兩個完全獨立對變量proafai:一對在pro_afai功能第二個在main。您需要將現有對從main傳遞給pro_afai以對其進行更改,並且可以通過將指向該變量的指針傳遞到pro_afai函數來完成此操作。