#include <stdio.h>
void sp(int *a)
{
int b=2;
a=&b;
*a=*a*2;
printf("%d,",*a);
}
main()
{
int k=3,*p=&k;
sp(p);
printf("%d,%d\n",k,*p);
}
//4 3 3
#include <stdio.h>
int k=7;
void f (int **s)
{
int *t=&k;
*s=t;
printf("%d,%d,%d,",k,*t,**s);
}
main()
{
int i=3,*p=&i,**r=&p;
f(r);
printf("%d,%d,%d\n",i,*p,**r);
}
//7 7 7 3 7 7
/*
int *f(int *s, int *t)
{
int *k;
if(*s<*t){
k=s;s=t;t=k;
return s;
}
}
main()
{
int i=3,j=5,*p=&i,*q=&j,*r;
r=f(p,q);
printf("%d,%d,%d,%d,%d\n",i,j,*p,*q,*r);
}
//3 5 3 5 3
*/
注意C语言中实参变量和形参变量之间的数据传递是单向的值传递,用指针同样遵循这一规则。
#include<stdio.h>
void swap(int *p1,int *p2)//不能交换
{
int *temp;
temp=p1;
p1=p2;
p2=temp;
}
/*void swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}*/
main()
{
int a,b;
int *ps1,*ps2;
scanf("%d%d",&a,&b);
ps1=&a;
ps2=&b;
if(a<b) swap(ps1,ps2);
printf("%d,%d\n",a,b);
}