C 指標和引用

2021-10-02 17:03:19 字數 1656 閱讀 5938

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 將變數名作為實參和形參 這時傳給形參的是變數的值,傳遞是單向的 如果在執行函式期間形參的值發生變化,並不傳回給實參 因為在呼叫函式時,形參和實...