作业帮 > 综合 > 作业

请高手帮我分析一下下面的这个程序!..

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/04/26 05:29:43
请高手帮我分析一下下面的这个程序!..
#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);检验一下!