c语言读程序写结果问题

#include<stdio.h>
int sum1(int *m)
{int n=1;
*m=*m+n;
return *m;
}
int sum2(int m)
{int n=2;
m=m+n;
return m;
}
main(){
int i,j=0;
for(i+1;i<+3;i++,j++)
{
printf("%5d",sum1(&j));
printf("%5d",sum2(j));
}printf("\n");
}
为什么答案是 1 3 3 5 5 7
请问第一个3是怎么算的?为什么我算出来是2

printf("%5d",sum1(&j)); 这一行已经把j变成1了,当printf("%5d",sum2(j));里1+2=3,所以就是这么算出来的追问

为什么printf("%5d",sum1(&j)); 把j变成1了呢?那i为什么不变呢?不好意思求教一下

追答

int sum1(int *m) 这个函数参数是指针,传入&j是将j的地址传入,所以,在sum1里改变j的值为1,出了函数以后,j的值会保留。i的值变了,你打印i的值就能看到,你这个程序里打印的都是j。

温馨提示:答案为网友推荐,仅供参考
相似回答