1、乙個變數的指標和引用
int a =1;
int&q = a;
cout << q << endl;
//輸出:1
cout <<
&q << endl;
cout <<
&a << endl;
cout << q++
<< endl;
//輸出: 2
&q++
;//會報語法錯誤
//ps:引用的++和變數++有相同效果
int*p =
&a;cout << p << endl;
cout <<
*p << endl;
//輸出:a的值 1
cout <<
++p << endl;
cout <<
++*p << endl;
//輸出:a++ = 2
2、函式引數中的引用和指標void
add(
int*a)
void
add(
int&a)
int&q = a;
int*p1 =
&a;add
(*p1)
;//呼叫第2個函式
add(p1)
;//呼叫第1個函式
add(q)
;//呼叫第2個函式
add(
&q);
//呼叫第1個函式
cout <<
*p1 << endl;
//輸出: 5
cout << q << endl;
//輸出: 5
cout << a << endl;
//輸出: 5
//由上述結果可以看出:
//不管方法的引數是指標還是引用,都能使得原變數a的值發生改變
3、陣列的指標和引用int arr[8]
=;//arr本身是指向arr[0]的指標
int*p = arr;
//此時直接呼叫p[i]即是arr[i]
p[i]
;//位址後移,即是arr[i]
++p;
//是arr[1]的位址
*p;//是arr[0]的值:1
++*p;
int*p1 =
&arr[0]
;//p1指向陣列的第乙個元素(必須帶&)(和*p = arr用法完全相同)
p1[i]
;//即是arr[i]
++p1;
//是arr[1]的位址
*p1;
//是arr[0]的值:1
++*p1;
//是arr[1]的值:2
int*beg =
begin
(arr)
;//返回首元素的位址
int*last=
end(arr)
;int
(&q)[8
]= arr;
q[i]
;//即是arr[i]
++q[i]
;//即arr[i]++
&q;//arr的位址(即arr[0]的位址)
&q[i]
;//即是arr[i]的位址
C 指標和引用
在深入介紹之前我們首先來看一下指標和引用的定義 指標和引用的區別,然後分別針對指標和引用展開討論,深入細節為何有這些差異。指標和引用的定義,下面用通俗易懂的話來概述一下 而宣告指標是可以不指向任何物件,也正是因為這個原因,使用指標之前必須做判空操作,而引用就不必。其次,引用不可以改變指向,對乙個物件...
C 引用和指標
引用和指標看上去差不多,看上去差不多,其實男寶寶和女寶寶是不一樣的 用起來還是有一定差距。本人菜鳥僅將遇到的問題記錄備案,以便日後翻查 ptrfunc.h ifndef ptrfunc h define ptrfunc h typedef int func int,int struct aa end...
C 指標和引用
有了變數名,為什麼還需要乙個別名呢?c 之所以增加引用型別,主要是把它作為函式引數,以擴充函式傳遞資料的功能 到目前為止我們介紹過函式引數傳遞的兩種情況 1 將變數名作為實參和形參 這時傳給形參的是變數的值,傳遞是單向的 如果在執行函式期間形參的值發生變化,並不傳回給實參 因為在呼叫函式時,形參和實...