c++指针和引用相关笔记

参考:https://blog.csdn.net/qq_27678917/article/details/70224813

1.指针和引用的定义和性质区别:

(1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来

的变量实质上是同一个东西,只不过是原变量的一个别名而已。如:

int a=10;int*  p=&a;( 指针)

int c=12;  int&  d=c; (引用)

    int a=10;
    int*  p=&a;
    cout<<p<<"\t"<<*p<<endl;

    int c=12;
    int& d=c;

    cout<<d<<"\t"<<&d<<"\t"<<&c<<endl;
0x7fff5c55aae8 10
12 0x7fff5c55aadc 0x7fff5c55aadc

上面定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单元的地址。

而下面2句定义了一个整形变量c和这个整形d,事实上c和d是同一个东西,在内存占有同一个存储单

元。 通过代码打印可以看出其内存地址是一个东西。


(2)引用不可以为空,当被创建的时候,必须初始化,而指针可以是空值,可以在任何时候被初始化。

(3)可以有const指针,但是没有const引用;

(4)指针可以有多级,但是引用只能是一级(int **p;合法 而 int &&a是不合法的)

(5)指针的值可以为空,但是引用的值不能为NULL,并且引用在定义的时候必须初始化;

(6)指针的值在初始化后可以改变,即指向其它的存储单元,而引用在进行初始化后就不会再改变了。

(7)”sizeof引用”得到的是所指向的变量(对象)的大小,而”sizeof指针”得到的是指针本身的大小;

(8)指针和引用的自增(++)运算意义不一样;

(9)如果返回动态内存分配的对象或者内存,必须使用指针,引用可能引起内存泄漏;



2.指针和引用作为函数参数进行传递时的区别

(1) 将指针传递参数实际传的是地址,可以直接改变地址。


2)将引用作为函数的参数进行传递。

在讲引用作为函数参数进行传递时,实质上传递的是实参本身,即传递进来的不是实参的一个拷贝,因此对


猜你喜欢

转载自blog.csdn.net/luoyexuge/article/details/80295058