2013-09-23 35 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函数来完成此操作。