正好准备面试,顺便复习一下指针和引用,这俩在比赛中用的比较少。
简单来说,引用符号是 &
,变量前加了这个符号,可以在我们修改形参的时候同时改变实参的值。因为一般的话,实参传值之后,实参是实参,形参是形参,除非做了return等操作。
引用用法
#include <iostream>
using namespace std;
void cal(int &z)
{
z*=5;
}
int main()
{
int a,&b=a; // 声明简单的变量,声明引用变量(这俩可以写一行)
a=5;
cout<<"i = "<<a<<endl; //i = 5
cout<<"r = "<<b<<endl; //r = 5
b=4;
cout<<"a = "<<a<<endl; //a = 4
cout<<"b = "<<b<<endl; //b = 4
int x=4;
cout<<"******"<<x<<endl; //******4
cal(x);
cout<<"------"<<x<<endl; //------20
return 0;
}
C++引用和指针的区别
-
引用:必须被初始化,值不能为NULL,初始化以后不能被改变,只能是一级
-
指针:不用初始化,值可以为空,初始化以后可以改变所指的对象,可以有多级,可以作为参数进行传递
-
C++中尽量用引用。个人觉得所有的引用都可以用指针,但指针比引用容易出错
-
引用当然更直观更直接,做参数时,如果在函数内不刻意要用指针的那些副作用(如越界访问,动态定向什么的)
-
指针:是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元。可以有const指针,但是没有const引用
-
引用:跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已
-
"sizeof引用"得到的是所指向的变量(对象)的大小,而"sizeof指针"得到的是指针本身的大小
-
指针和引用的自增(++)运算意义不一样