(一)
在定義時,* 是一個標識符,聲明該變量是一個指針,比如說int *p; 那p就是一個指向int型的指針;
在調用時,
(1)*p是指指針p指向的那個變量,比如說之前有int a=5;int *p=a;那么p的值是a的地址,也就是指針p指向a,*p則等于a的值,即*p=5。
(2)&,則是引用,比如說有定義int a=5;再定義int b=&a;那么這里的b則引用a的值,即b=5,而再給b賦值:b=10,a的值也會變為10。
(二)
先定義有int x=0;和int *p=x;
1、若定義函數: void fun_1(int a){ a=5;} , 則調用:fun_1(x); 之后,x還等于0;因為fun_1函數只改變了形參a的值,a只是fun_1函數里的局部變量,調用fun_1(x)相當于是“a=x;a=5;”,x沒變;
2、若定義函數:void fun_2(int &a){ a=5;} , 則調用:fun_2(x); 之后,x等于5;因為這里的a引用了x的值;
3、若定義函數:void fun_3(int *a){ *a=5;} , 則調用:fun_3(p); 之后,x也等于5;因為fun_3函數的參數a是一個指針,相當于a=p;*a則與*p指向同一地址,改變*a即改變*p即x