请高手帮我分析一下下面的这个程序!..#include void swap(int *p1,int *p2){ int *p;p=p1;p1=p2;p2=p;}void main(){ int a,b;int *pointer_1,*pointer_2;scanf("%d,%d",&a,&b);pointer_1=&a; pointer_2=&b;if(a

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 18:19:53
请高手帮我分析一下下面的这个程序!..#include void swap(int *p1,int *p2){ int *p;p=p1;p1=p2;p2=p;}void main(){ int a,b;int *pointer_1,*pointer_2;scanf(
xTN@( :W* +塪d" q0wBDER ~:  }ld3g朙uy+{94 z؆c˧nq;vݽA ̼J߼O,H iN";iDeV>IRF*jDQ3?VO"wAWE_GTԕy=Lȓ 9Dja]`-H=_^\@{3Mq℅Y>/~R y90dn?MzQ4jڣf3j-Q?-|ᶗLAU}c~A(7F*=A'-!)Xi`4=-

请高手帮我分析一下下面的这个程序!..#include void swap(int *p1,int *p2){ int *p;p=p1;p1=p2;p2=p;}void main(){ int a,b;int *pointer_1,*pointer_2;scanf("%d,%d",&a,&b);pointer_1=&a; pointer_2=&b;if(a
请高手帮我分析一下下面的这个程序!..
#include
void swap(int *p1,int *p2)
{ int *p;
p=p1;
p1=p2;
p2=p;}
void main()
{ int a,b;
int *pointer_1,*pointer_2;
scanf("%d,%d",&a,&b);
pointer_1=&a; pointer_2=&b;
if(a

请高手帮我分析一下下面的这个程序!..#include void swap(int *p1,int *p2){ int *p;p=p1;p1=p2;p2=p;}void main(){ int a,b;int *pointer_1,*pointer_2;scanf("%d,%d",&a,&b);pointer_1=&a; pointer_2=&b;if(a
void swap(int *p1, int *p2)
{ int *p;
p=p1;
p1=p2;
p2=p;}
有问题:
(1)函数传递必须遵循“值传递”原则!就是:
1)形参为值时,函数运行时将构建与实参一样的副本,所以形参为值时值得改变传不出来!
2)形参为指针时,也同样遵循“值传递”原则,只不过函数运行时系统为他构造的是一个值等于“指针变量存储的地址”所以形参为指针时可以传出来!
再来看看你的程序,你让指针的值发生变化(就是使得值发生变化,那肯定改变传不出来哦!)
正确的做法(使得指针所指的变量的值发生变化):
void swap(int *p1, int *p2)
{ int *p;
*p=*p1;
*p1=*p2;
*p2=*p;}
你的输入有问题不是这样输入,你可以加一条printf("a=%d, b=%d",a,b);检验一下!