#include<stdio.h>
void adjust(int *p1,int *p2)
{
int *p3;
if(*p1<*p2)
{
p3=p1;
p1=p2;
p2=p3;
}
}
int main()
{
int a1,a2,*math1,*math2;
math1=&a1;
math2=&a2;
scanf("%d%d\n",&a1,&a2);
adjust(math1,math2);
printf("%d%d\n",*math1,*math2);
return 0;
}
uj5u.com熱心網友回復:
供參考:#include<stdio.h>
void adjust1(int *p1,int *p2)//指標p1 p2作用域在本函式內,所以改變他們的值,
//并不能傳回給math1 math2,所以是無效的。
{
int *p3;
if( *p1 < *p2)
{
p3 = p1;
p1 = p2;
p2 = p3;
}
}
void adjust2(int *p1,int *p2)//對指標所指向的值操作是有效的
{
int p3;
if(*p1<*p2)
{
p3 = *p1;
*p1 = *p2;
*p2 = p3;
}
}
int main()
{
int a1,a2,*math1,*math2;
math1=&a1;
math2=&a2;
scanf("%d %d",&a1,&a2);//scanf("%d%d\n",&a1,&a2);這里多了'\n'
adjust1(math1,math2);
printf("adjust1:%d %d\n",*math1,*math2);
adjust2(math1,math2);
printf("adjust2:%d %d\n",*math1,*math2);
return 0;
}
uj5u.com熱心網友回復:
深入學學指標和參考,以及函式作用域和回傳值轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/267901.html
標籤:C語言
上一篇:為什么結果是這樣???求教!!!
