概念:指针就是一个地址变量。它本身就会占用一块空间。
int a=0;
int *p=&a;
引用:变量的别名。不占用额外的空间。
int a = 0;
int& b=a;
做参数的区别和联系:
函数传参可以大概分个值传递和址传递;在需要改变原来的内容的时候需要用到址传递;也就是用指针作为形参;但是在c++中使用引用也可以使用引用作为形参。
int a(int& a)
{
a=a+1;
}
int main()
{
int x=1;
int& y=x;
a(y);
return 0;
}
其实指针和引用只是在表面上看起来不同,在底层实现时,引用和指针是一样的;在表面上的不同会在使用时比较简便。
当引用作为返回值
传值返回时,是将返回变量的值放到eax寄存器中 传引用返回时,是将返回变量的地址放到eax寄存器中 推论: 1.不要返回一个临时变量的引用 2.如果返回对象出了当前函数的作用域依旧存在,则最好使用引用返回,这样更加高效
指针和引用的区别:
1、引用只能初始化一次,之后不能更改,指针可更改
2、引用必须指向有效的变量,指针可以为空
3、siezeof指针对象得到的是指针对象地址的大小,而引用得到的是指向变量的大小
4、指针自增和引用自增意义不一样
引用比指针更安全