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; 是什么意思?意思是?