C++ 指针和引用

引用和指针的区别和联系

1. 引用只能在定义时初始化一次,以后不能改变指向其它变量(从一而终);指针变量的值可变。安全

2. 引用必须指向有效的变量,指针能够为空。函数

3. sizeof指针对象和引用对象的意义不同。sizeof引用获得的是所指向的变量的大小,而sizeof指针是对象地址的大小。指针

4. 指针和引用自增(++)自减(--)意义不同。对象

5. 相对而言,引用比指针更安全。内存

不一样点:变量

  1. 指针是一个实体,而引用仅是个别名;
  2. 引用使用时无需解引用(*),指针须要解引用;
  3. 引用只能在定义时被初始化一次,以后不可变;指针可变;
  4. 引用没有 const,指针有 const;const修饰的指针不可变;
  5. 引用不能为空,指针能够为空;
  6. “sizeof 引用”获得的是所指向的变量(对象)的大小,而“sizeof 指针”获得的是指针自己(所指向的变量或对象的地址)的大小;
  7. 指针和引用的自增(++)运算意义不同;

8.从内存分配上看:程序为指针变量分配内存区域,而引用不须要分配内存区域。引用

相同点:
二者都是地址的概念,指针指向一起内存,其内容为所指内存的地址;引用是某块儿内存的别名。程序

函数参数传递中值传递、地址传递、引用传递有什么区别?

(1) 值传递,会为形参从新分配内存空间,将实参的值拷贝给形参,形参的值不会影响实参的值,函数调用结束后形参被释放;内存分配

(2) 引用传递,不会为形参从新分配内存空间,形参只是实参的别名,形参的改变会影响实参的值,函数调用结束后形参不会被释放;co

(3) 地址传递,形参为指针变量,将实参的地址传递给函数,能够在函数中改变实参的值,调用时为形参指针变量分配内存,结束时释放指针变量。

相关文章
相关标签/搜索