当前位置:编程学习 > C/C++ >>

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没有返回值?)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

代码乱如麻;我复制到文档说明一下再给你发上来了

上一个:c语言二维表设计
下一个:c语言中的问题

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,