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)”有一个语法错误,如缺少“&”在“(/ {”。
之前我不明白为什么? C不支持此功能吗?
答案 0 :(得分:21)
C不支持通过引用传递;这是一个C ++功能。你必须改为通过指针。
void swap(int *first, int *second){
int temp = *first;
*first = *second;
*second = temp;
}
int a=3,b=2;
swap(&a,&b);
答案 1 :(得分:16)
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; \
}
答案 2 :(得分:0)
对于整数交换,您可以在没有局部变量的情况下使用此方法:
int swap(int* a, int* b)
{
*a -= *b;
*b += *a;
*a = *b - *a;
}