c语言 意思理解的不知道对不对请大家看看!

来源:百度知道 编辑:UC知道 时间:2024/06/04 11:47:25
#include <stdio.h>
void chang(int *pt1,int *pt2);
main()
{
int *p1,*p2,a,b;
scanf("%d,%d",&a,&b);
p1=&a;
p2=&b;
chang(p1,p2);
printf("%d,%d\n",*p1,*p2);
}
void chang (int *pt1,int *pt2)
{
int *t;
if(*pt1<*pt2)
{
t=pt1;
pt1=pt2;
pt2=t;

}
return;
}
/*这段程序是不是想告诉我虽然子程序指针是相互交换了,但主程序的指针是不随子程序的指针变化而变化的呢?*/

具体这样理解:这个程序中pt1,pt2是形式参数,不会对实际参数有影响,函数调用的过程的参数传递的过程是单向的,在函数中没有用*运算符改变内存单元的值,指针变量的交换是没有意义的,作为局部变量,这些指针变量在函数返回时被释放了.

对,在子函数内,只是形参改变而已,函数结束后,实参不会变化的