|
2鱼币
一个关于指针的问题 新手 请大家帮忙 谢谢
用形参为指针变量的函数实现输入的两个数按照先小后大的顺序输出
如果源代码如下就能实现
#include<stdio.h>
void swap(int *a, int *b); //用于交换两个数的顺序,形参为指针变量
void main()
{
int a, b;
int *p, *q; //定义两个指针
scanf("%d %d",&a,&b);
p=&a;
q=&b; //p,q分别指向a,b的地址
if(a>b)
swap(p,q);
printf("%d %d\n",*p, *q);
}
void swap(int *a, int *b)
{
int t; //定义一个整型变量
t=*a; //*a为main函数中的*p
*a=*b; //*b为main函数中的*q
*b=t;
}
但是如果把以上的源代码中 swap函数中定义的整型变量改为指针变量 然后交换指针就不行 源代码如下:
#include<stdio.h>
void swap(int *a, int *b);
void main()
{
int a, b;
int *p, *q;
scanf("%d %d",&a,&b);
p=&a;
q=&b;
if(a>b)
swap(p,q);
printf("%d %d\n",*p, *q);
}
void swap(int *a, int *b)
{
int *t; //定义一个指针变量
t=a;
a=b;
b=t;
}
我DEBUG 一步一步看 在swap函数里面 指针a b的地址的确交换了 但是回到main函数里面 p q的地址还是没变
|
|