请高手帮我分析一下下面的这个程序!..#include void swap(int *p1,int

发布时间:2021-03-15 02:19:38

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

网友回答

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);检验一下!
以上问题属网友观点,不代表本站立场,仅供参考!