0

C++ 中的代码- Ideone

#include <stdio.h>
using namespace std;

void swap(int &a, int &b){
    printf("%d %d\n", a, b);
        printf("%d %d\n", &a, &b);

    int temp=a;
    a=b;
    b=temp;
}

int main(void) {
    int a=2, b=5;
    printf("%d %d\n", a, b);
            printf("%d %d\n", &a, &b);

    swap(a,b);
    printf("%d %d\n", a, b);
    return 0;
}

输出-

2 5

-1076828408 -1076828404

2 5

-1076828408 -1076828404

5 2

C中的代码- Ideone

#include <stdio.h>

void swap(int &a, int &b){
    printf("%d %d\n", a, b);
        printf("%d %d\n", &a, &b);

    int temp=a;
    a=b;
    b=temp;
}

int main(void) {
    int a=2, b=5;
    printf("%d %d\n", a, b);
            printf("%d %d\n", &a, &b);

    swap(a,b);
    printf("%d %d\n", a, b);
    return 0;
}

编译信息

prog.c:3:15: 错误:在 '&' 之前需要 ';'、',' 或 ')' 令牌

void swap(int &a, int &b){
              ^

prog.c:在函数'main'中:

prog.c:15:4:警告:格式“%d”需要“int”类型的参数,但参数 2 的类型为“int *”[-Wformat=]

printf("%d %d\n", &a, &b);
^

prog.c:15:4:警告:格式“%d”需要“int”类型的参数,但参数 3 的类型为“int *”[-Wformat=]

prog.c:17:2: 警告:函数'swap'的隐式声明 [-Wimplicit-function-declaration] swap(a,b); ^

为什么它在 C++ 中作为调用参考工作,但在 C 中却不行?

int &a; 是什么意思?意思是?

4

1 回答 1

4

& 在类似的函数定义中使用称为引用。它们与指针不同,在 C 中不受支持。

于 2013-09-27T04:48:23.440 回答