引用变量一般需要在定义的时候初始化,函数参数和成员变量可以无需初始化,本地变量和全局比变量需要初始化。
引用变量为赋值变量的别名。
引用变量的赋值必须为一个有名字的变量。
返回值类型为引用变量的函数,返回值不可以为本地变量,因为函数结束后,本地变量的内存会被释放,返回值无意义,error。可以返回全局变量
引用(reference):cant be null,必须依附于某一变量,一旦初始化后,依赖的变量对象便固定。
指针(pointer):can be null,对立的,可以更改
指针变量赋初值,初值不为变量为常值,常值在系统中不像变量一样占用额外的内存,为代码段的一部分,系统会将常值在代码段中的地址传给指针,然而代码段不可以修改,当使用指针变量对常值进行修改,会报bus error。
reference:底层为变量指针
C 指针函数
距离变量名最近的决定变量的基本类型
int &* p //illegal 不可以取引用变量的地址
int *& p //ok int指针类型变量的引用
距离p最近的为*,p为指针;距离p最近的为&,p为引用
reference不是一个实体。无reference类型的数组
java中的引用本质是指针(不可参与计算,无星号)
当类的成员变量为引用时,无法在声明的时候与其他变量进行绑定,必须在构造函数中,使用Initialize list将该变量进行赋值(绑定)
函数的返回值类型可以是reference或者pointer,但是不可以返回函数的local variable!可以是全局变量。return的变量将会与符号&或符号*结合,与其他reference或 pointer进行绑定。
如果函数的返回值类型是reference,那么该函数的返回值即为其return的变量的别名(引用),可以直接使用函数的结果做赋值或被赋值。
通常使用const reference作为函数的参数,以避免在函数中对参数的值进行修改。