指針指向一塊記憶體,它的内容是所指記憶體的位址;
引用是某塊記憶體的别名
引用的一些規則如下:
(1)引用被建立的同時必須被初始化(指針則可以在任何時候被初始化)。
(2)不能有NULL 引用,引用必須與合法的存儲單元關聯(指針則可以是NULL)。
(3)一旦引用被初始化,就不能改變引用的關系(指針則可以随時改變所指的對象)
*和const誰在前,就先念誰
故const int *p叫做常量指針(也可以寫作int const *p)
因為(*p)變成常量,故不能執行*p=x的操作,但是可以修改p指向的位址
int *const p叫做指針常量
因為(p)變成常量,故p指向的位址不能修改,但是可以執行*p=x的操作
const int *const p叫做指向常量的常量指針
即(p)和(*p)都不能複制
int i,j,a,b,c;
a=10;
b=20;
c=30;
const int *p=&c; //常量指針
p=&a; //可以修改指針指向
*p=2;(Error) //但是不可以通過*p修改a中的值
int *const pp=&c; //指針常量
*pp=2; //可以通過*pp修改c的值
pp=&a; (Error) //但是指針指向的對象不可更改
const int *const ppp=&c;
*ppp=5;(Error)
ppp=&a;(Error)