我正在尝试使用指针交换两个整数的值,请参阅下面的代码:
void swapArgs(int *a, int *b) {
int *temp = &b;
b = &a;
a = &temp;
printf("Swapped Arguments: A=%d, B=%d\n", *a, *b);
}
执行printf时,结果值是巨大的数字。任何人都可以向我解释我的代码有什么问题吗?指针还是新手。
答案 0 :(得分:5)
问题是你需要复制值,而不是指针:
int temp = *b;
*b = *a;
*a = temp;
注意:您的代码正在分配错误类型的指针 - &a
为int**
,而b
为int*
(即星号不匹配)。你的编译器应该给你关于它的警告。修复它们可以解决问题。
答案 1 :(得分:1)
请记住,您的a
和b
已经是指针 - 因此在功能内部您不能使用&
(地址运算符),而是必须使用*
(解除引用运算符):
int temp = *b;
*b = *a;
*a = temp;