面試題 引用和指標

2021-06-02 23:46:15 字數 2128 閱讀 4100

1 引用

簡單理解引用就是乙個變數的另乙個名字,從這個名字的角度對變數可以加以修飾,同時擁有const指標的特性 ,所以在宣告時必須初始化 1

inta=1

;2const

intb=4

;3int&

ref_a;

//必須初始化 :declared as reference but not initialized

4const

int&

ref_a_const=a;

5ref_a++;

6ref_a_const++;

//唯讀的:increment of read-only reference 『ref_a_const』

7int

&ref_b=b;

//型別不匹配: invalid initialization of reference of type 『int&』 from expression of type 『const int』

8const

int&

ref_b_const=b;

2 指標

2.1 常用的宣告(閱讀規則)

int a;定義乙個整型數

int *a;指向整型數的指標

int **a;指向指標的指標,它指向的指標指向整型數

int a[10];擁有10個整型數元素的陣列

int *a[10];擁有10個指向整型數指標的陣列

int (*a)[10];指標 這個指標指向有10個整型數的陣列

int (*a)(int);指向函式的指標,該函式返回int ,有乙個int引數

int (*a[10])(int);陣列-》有10個指標-》每個指標指向函式-》函式返回int,有乙個int引數

2.2指標運算

intb[5

]=;int

*pint=(

int*)(&

b+1);

//必須初pint指向了"b[5]"

2.3指標常量、常量指標

這種事有點文字遊戲,指標常量(* const)就是乙個常量,常量指標(const *)就是一指標,但是在它看來它所指向的變數x是個常量,無論x是不是常量。

例如:int * const p1;//是指標常量,它本身的內容是不能被修改的,但是裡面指標指向的內容是可以修改的。

int const * p2;//常量指標,它們本事可以別修改,但是指向的內容不可修改

const int* const p3;//常量指標,並且指向的內容也不可以修改的。

1#include

<

stdio.h

>

2int

main()3

3this指標:this指標的作用域是類內部,在類的非靜態函式中訪問類的非靜態成員時,編譯器會自動將物件位址作為乙個隱含的引數傳遞給函式

呼叫成員函式時,會將當前物件的this指標傳遞給成員函式。乙個類的成員函式體只有乙個,而成員函式之所以能夠把屬於此類的各個物件區別開來,是因為每個執行類成員函式時,都會把當前物件的this指標傳入成員函式,

4指標與函式 1

#include

<

iostream

>

2using

namespace

std;

3int

max(

intx,

inty)47

//這個函式返回的是指標

8float

*find(

float*p,

intx)912

intmain()13;

16int(*

p)(int

,int

);//

這個指標指向函式

17float*q

=find(score+1

,1);18

inta;19p

=max;20a

=(*p)(1,

2);21cout

<<"a=

"<<

a<<

endl;

22cout

<<

"*q=

"<<*

q<<

endl;

23return0;

24}

面試題 指標 引用

返回目錄 問題 問 引用與指標有什麼區別?答 1.引用必須初始化,指標可以不用。2.引用初始化以後就不能被改變 即只能初始化一次,始終只指向指定的物件 而指標可以改變所指向的物件。3.不存在指向空值的引用,而指標可以指向乙個空值,即空指標。4.因為引用不能指向空值,這意味著使用引用之前不需要測試其合...

C 高頻面試題指標和引用

15 請你理解的c 中的 引用和指標 指標是指向一塊記憶體位址的變數,這個變數可以指向其他位址 引用是乙個變數的別名,只能是乙個變數的別名。乙個變數的引用可以轉為指向它的指標。1.初始化不同,引用使用時必須初始化,且只能指向乙個變數,初始化不能指向其他變數 指標不一樣,指標使用時不必初始化,可以指向...

面試題 指標

一 指標 1 利用指標實現兩數交換 include using namespace std void swap1 int p,int q void swap2 int p,int q void swap3 int p,int q void swap4 int p,int q void swap5 i...