c语言指针的运用
﹟include<stdio·h> void sub(int x,int y,int *z){*z=y-x;} main(){int a,b,c; sub(10,5,&a);sub(7,a,﹠b);sub(a,b, ﹠c);printf(“%d,%d,%d\n”,a,b,c);}疑问1(sub没有返回值?)疑问2(sub中的b ,﹠b的值应该相同的?意义不同?)疑问3(输出的a,b,c是如何计算的,分别是什么?)
追问:来自手机问问答案是-5,-12,-7
﹟include<stdio·h> void sub(int x,int y,int *z){*z=y-x;} main(){int a,b,c; sub(10,5,&a);sub(7,a,﹠b);sub(a,b, ﹠c);printf(“%d,%d,%d\n”,a,b,c);}疑问1(sub没有返回值?)疑问2(sub中的b ,﹠b的值应该相同的?意义不同?)疑问3(输出的a,b,c是如何计算的,分别是什么?)
追问:来自手机问问答案是-5,-12,-7
答案:﹟include<stdio·h>
void sub(int x,int y,int *z)
{*z=y-x;}
main()
{int a,b,c;
sub(10,5,&a);
sub(7,a,﹠b);
sub(a,b, ﹠c);
printf(“%d,%d,%d\n”,a,b,c);
}
疑问1(sub没有返回值?)sub 他不用返回值;因为他修改的是指针;也就是传给他A的地址;经过加减,他把值;放到A里面;所以不用返回值;这里面要讲到有关函数调用:当指针变量做形参时,形参变,实参也变;Z是形参,A是实参;
疑问2(sub中的b ,﹠b的值应该相同的?意义不同?)你这个是什么意思啊,好像有点看不懂;哦明白了;&b这个是传给指针变量的;就像我们要把变量赋给指针变量一样;(z=&b);而没有&(地址运算符的B)是传给y的;y是一个普通整型变量;所以不用取地址符;就像:y=b;所以这个形参变,实参不变;而上面有地址符的B形参变,实参也变;
疑问3(输出的a,b,c是如何计算的,分别是什么?)
sub(10,5,&a) x=10,y=5,z=&a; 5-10=z; z= -5; 主函的A= -5; 这里的Z代表A;经过减法把值存到A
sub(7,a,&b) x=7,y=-5,z=&b; 7-(-5)=z, z=12; 主函数的B=-12; 这里的Z代表B;经过减法把值存到B
sub(a,b,&c) x=-5,y=5,z=&c; -5-2=z, z=-7; 主函数的C=-7;这里的Z代表C;经过减法把值存到C
他会输出:-5 -12 -7不懂再来问我好了;
这是传值与传地址的区别了
sub里的三个变量,x,y是传的值,也就是传的一个值的副本。
而z则是传的地址,sub函数体里对z的操作会影响到传递进来的那个变量。
b是指的变量本身,&b是指的变量的地址。
剩下的计算就不用说也知道了吧
分别是15, 22, 37
代码乱如麻;我复制到文档说明一下再给你发上来了