指针和引用

来源:互联网 发布:linux 动态库 编辑:程序博客网 时间:2024/06/07 11:41

指针:

1. 指针用于指向对象,它保存的是指向对象的地址。

2. 指针在定义时可以不用初始化,但尽量避免使用未初始化的指针。

3. 对指针初始化或赋值只能使用以下4种类型:(1) 0值常量表达式;(2)类型匹配的对象地址;(3)另一对象末的下一地址;(4)同类型的另一个有效指针。

    int iValue = 0;

    const int cValue = 0;

    int *pi = iValue; //error

    pi = 0; //ok

    pi = cValue;//ok

    pi = &iValue; //ok    

4. void *指针可以保存任何类型对象的地址。

 

引用:

1. 引用是对象的别名。

2. 引用在定义的时候必须初始化,并且只能用与该引用同类型的对象初始化。

    int iValue = 10;

    int &refValue;   //error

    int &refValue = 10;   //error

    int &refValue = iValue; //ok

3. 除了不能定义引用类型的引用外,其他任何类型都可以定义引用。

4. 作用在引用上的所有操作实际上都作用在该引用绑定的对象上。

    int iValue = 10;

    int &refValue = iValue;

    refValue = 5; // iValue的值变成5,实际上相当于iValue = 5

5. 当一个引用初始化后,引用的对象不能改变。

6. const引用是指向const对象的引用。

    const int iValue = 10;

    const int &refValue1 = iValue; //ok

    int &refValue2 = iValue;//error

7. const引用可以初始化为不同但相关类型的对象引用,也可以初始化为右值。这一点与非const引用不同。

    int i = 0;

    const int &r = i; //ok

    const int &r1 = 1; //ok

    const int &r2 = r1 + i;//ok

 

 

指针和引用的相同点:

1. 都是地址概念,都可间接访问一个值。

 

指针和引用的区别:

1. 引用总是指向某个对象,定义时必须初始化。

2. 给引用赋值修改的是该引用所关联的对象的值。

原创粉丝点击