ポインタ-関数パラメータの誤りやすい点分析
3496 ワード
例:aとbの2つの整数を入力し、aとbを先に大きくしてから小さい順に出力します.
#include
int main(){
void swap(int *p1,int *p2);
int a,b;
int * pointer_1,* pointer_2;
printf("please enter a and b:");
scanf("%d,%d",&a,&b);
pointer_1 = &a;
pointer_2 = &b;
if(a
, 。 ,
, swap 。
swap , *p1,*p2 a,b , 。
int * temp , , ,*p1 a , 。 。
, *p1 *p2 , a b 。
, a, b 。
,
#include
int main(){
void swap(int *p1,int *p2);
int a,b;
int * pointer_1,* pointer_2;
printf("please enter a and b:");
scanf("%d,%d",&a,&b);
pointer_1 = &a;
pointer_2 = &b;
if(a
。 swap , 。
z
, p1 , p1 p,
, p1, p p2。
, p1,p2 , a b 。
, 。
a,b,c, 。 ,
#include
int main(){
void exchange(int *q1, int *q2, int *q3);
int a,b,c,*p1,*p2,*p3;
printf("please enter three numbers:");
scanf("%d,%d,%d",&a,&b,&c);
p1 = &a; p2 = &b; p3 = &c;
exchange(p1,p2,p3);
printf("The order is :%d,%d,%d
",a,b,c);
return 0;
}
void exchange(int *q1, int *q2, int *q3){
void swap(int *pt1, int *pt2);
if(*q1 < *q2) swap(q1,q2);
if(*q1 < *q3) swap(q1,q3);
if(*q2 < *q3) swap(q2,q3);
}
void swap(int *pt1, int *pt2){
int temp;
if(*pt1 < *pt2){
temp = *pt1;
*pt1 = *pt2;
*pt2 = temp;
}
}