输出C中的参数

时间:2012-02-04 21:03:06

标签: c parameter-passing out

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不支持此功能吗?

3 个答案:

答案 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; 
}