void swap(int &first, int &second){
int temp = first;
first = second;
second = temp;
}
int a=3,b=2;
swap(a,b);
编译器抱怨void swap(int &first, int &second)
有语法错误。为什么?C不支持引用吗?
void swap(int &first, int &second){
int temp = first;
first = second;
second = temp;
}
int a=3,b=2;
swap(a,b);
编译器抱怨void swap(int &first, int &second)
有语法错误。为什么?C不支持引用吗?
C 不支持引用传递;这是一个 C++ 特性。您必须改为传递指针。
void swap(int *first, int *second){
int temp = *first;
*first = *second;
*second = temp;
}
int a=3,b=2;
swap(&a,&b);
C 不支持通过引用传递。因此,您将需要使用指针来完成您想要实现的目标:
void swap(int *first, int *second){
int temp = *first;
*first = *second;
*second = temp;
}
int a=3,b=2;
swap(&a,&b);
我不建议这样做:但为了完整起见,我会添加它。
如果您的参数没有副作用,您可以使用宏。
#define swap(a,b){ \
int _temp = (a); \
(a) = _b; \
(b) = _temp; \
}
对于整数交换,您可以在没有局部变量的情况下使用此方法:
int swap(int* a, int* b)
{
*a -= *b;
*b += *a;
*a = *b - *a;
}