首页 > 解决方案 > a 和 b 的 Main 成功交换

问题描述

**不交换主要的 a 和 5。我假设指针的某些东西是关闭的。使主要值发生变化的变化是什么?目前它在打印时执行以下操作:**

a= 5
b= 10
a= 10
b= 5
a= 5
b= 10


void swap (int* a, int* b) {
    int c = 0 ;
    c = a ;
    a = b ;
    b = c ;

    printf ("a= %d\n", a) ;
    printf ("b= %d\n", b) ;

    return ;
}

int main(){
    int* a = 5 ;
    int* b = 10 ;

    printf ("a= %d\n", a) ;
    printf ("b= %d\n", b) ;

    swap (a,b) ;

    printf ("a= %d\n", a) ;
    printf ("b= %d\n", b) ;

    return (0) ;

}

标签: c

解决方案


int* a = 5 ;
int* b = 10 ;

这应该是:

int a = 5 ;
int b = 10 ;

swap(&a, &b)然后,如果您对代码进行以下更改,您可以使用它们来交换它们swap

c = *a ;
*a = *b ;
*b = c ;

printf ("a= %d\n", *a) ;
printf ("b= %d\n", *b) ;

这是一个完整的例子:

void swap (int* a, int* b) {
    int c = 0 ;
    c = *a ;
    *a = *b ;
    *b = c ;

    printf ("a= %d\n", *a) ;
    printf ("b= %d\n", *b) ;

    return ;
}

int main(){
    int a = 5 ;
    int b = 10 ;

    printf ("a= %d\n", a) ;
    printf ("b= %d\n", b) ;

    swap (&a,&b) ;

    printf ("a= %d\n", a) ;
    printf ("b= %d\n", b) ;

    return (0) ;

}

推荐阅读