使用指针交换两个整数

时间:2016-12-04 21:59:03

标签: c

我正在尝试使用指针交换两个整数的值,请参阅下面的代码:

void swapArgs(int *a, int *b) {

    int *temp = &b;                                         
    b = &a;                                             
    a = &temp;                                              
    printf("Swapped Arguments: A=%d, B=%d\n", *a, *b);          
}

执行printf时,结果值是巨大的数字。任何人都可以向我解释我的代码有什么问题吗?指针还是新手。

2 个答案:

答案 0 :(得分:5)

问题是你需要复制值,而不是指针:

int temp = *b;
*b = *a;
*a = temp;

注意:您的代码正在分配错误类型的指针 - &aint**,而bint*(即星号不匹配)。你的编译器应该给你关于它的警告。修复它们可以解决问题。

答案 1 :(得分:1)

请记住,您的ab已经是指针 - 因此在功能内部您不能使用&(地址运算符),而是必须使用* (解除引用运算符):

int temp = *b; 
*b = *a;                                             
*a = temp;