ポインタ-関数パラメータの誤りやすい点分析

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; } }