一般c语言经常用指针传递参数,修改变量的值,但是在c++中多了引用的语法,作用类似
代码分析如下
/*swap.c*/
/*c程序中通过指针传递参数来交换a b的值*/
#include <stdio.h>
void swap(int* a,int *b)
{
int t=*a;
*a=*b;
*b=t;
}
int main()
{
int a=1;
int b=2;
swap(&a,&b);
printf("a=%d,b=%d\n",a,b);/*打印结果,a=2.b=1*/
return 0;
}
c++代码如下
/*swap.cpp*/
/*c++程序中通过引用来交换a b的值*/
#include <stdio.h>
void swap(int &a,int &b) /*引用的符号类似取址符号*/
{
int t=a; /*我们注意到和上面不同的是*号没了*/
a=b;
b=t;
}
int main()
{
int a=1;
int b=2;
swap(a,b); /*我们注意到&号没了*/
printf("a=%d,b=%d\n",a,b);/*打印结果,a=2.b=1*/
return 0;
}
const变量引用
代码如下
/*text.cpp*/
#include <stdio.h>
int main()
{
int a=1;
const int &b=a; /*b引用a*/
int *p=(int *)&b; /*由于b是对a的引用,所以这条语句等价于取a的地址*/
b=3;/*其实这条语句是错误的,由于b被const修饰所以b不能作为左值*/
*p=3; /*这才是合法的*/
printf("a=%d\n",a);/*打印结果,a=3*/
return 0;
}
const常量引用
/*text1.cpp*/
#include <stdio.h>
int main()
{
const int &a=1; /*常量的引用,这是编译器给a分配空间*/
int *p=(int *)&a; /*p指向a*/
a=3;/*其实这条语句是错误的,由于a被const修饰所以a不能作为左值*/
*p=3; /*这才是合法的*/
printf("a=%d\n",a);/*打印结果,a=3*/
return 0;
}