C 學習日記12 引用 指標和const用法

2021-07-24 03:38:28 字數 1848 閱讀 3781

指標和引用都是實現了對其它物件的間接訪問

引用(reference)

1、引用是為物件起了另外乙個名字。通常將宣告符寫成&d的形式來定義引用型別,其中d是宣告的變數名

如:int a=20;int &b=a;//即a和b指向同一塊記憶體

2、引用無法重新繫結到另外乙個物件,即只能繫結乙個物件,因此引用必須初始化

3、引用即別名,引用並非物件,它只是為乙個已經存在的物件所起的另外乙個名字。為引用賦值,實際上是把值賦給了與引用繫結的物件。

4、引用只能繫結到物件上,無法與字面值或某個表示式的計算結果繫結在一起。

指標(pointer)

取值符:*

1、指標就是乙個物件,允許對指標賦值和拷貝,可以指向不同的物件

2、指標無須在定義時賦值。

3、定義指標型別的方式,是將宣告符寫成*d的形式,其中d是變數名。

如: int *a,*b,*p; //定義三個指標變數,未賦值

int a=20; int *p=&a;//整型指標——等價於p=&a

;即指標變數p指向a所在的記憶體

int a;int *p=a;//陣列指標

4、在宣告語句中指標的型別實際上被用於指定它所指向的型別,所以二者必須匹配,如果指標指向了乙個其它型別的物件,對該物件的操作將發生錯誤。

指標值

指標值即位址

如果指標指向了乙個物件,則允許使用取值符(解引用符)*來訪問該物件

對指標解引用會得出所指的物件,因此如果給解引用的結果賦值,實際上就是給指標所指向的的物件賦值

空指標(null pointer)

不指向任何物件

生成空指標的方法:

1、int *p=nullptr;//最直接(c++11新標準)最值得推薦用法

2、int *p=0;

3、int *p=null; //需要包含#include不建議使用

注:建議初始化所有指標,如果實在不清楚初始化時,指標指向何處,可以先把它初始化未nullptr或0

賦值和指標

1、給指標賦值就是令它存放乙個新位址,從而指向乙個新的物件

2、賦值時,分清到底是改變了指標的值,還是改變了指標所指向物件的值

3、任何非0指標對應的條件值都是true,即空指標的條件值是false

void* 指標

可以存放任意物件的位址,乙個void* 指標存放乙個位址(此型別指標不經常使用)

復合型別

基本資料型別  + 一組宣告符(宣告符=修飾符+變數名) 

常見: 型別 + (修飾符) + 變數名

一條定義語句可能定義出不同型別的變數

如:int i=1024, *p=&i, &j=i;

int* i, j;//定義乙個整型指標變數i和乙個整型變數j(雖然*位置不同,但

i和j還是不同)

//即int* i==int *i

涉及指標或引用的說明,一般有兩種方法

//int 為型別識別符號   *為修飾符  p為變數名 

1、把修飾符和變數名寫在一起:int *p;//建議習慣性使用

2、把修飾符和型別名寫在一起:int* p;

指向指標的指標

指標是記憶體中的物件,像其他物件意義

C (二)引用和指標

引用不是定義乙個新的變數,而是給乙個已經定義的變數重新起乙個別名。定義的格式是 型別 引用變數名 已定義過得變數名 引用的特點 1 乙個變數可以取多個別名 2 引用必須初始化 3 引用只能在初始化的時候引用一次,不能改變為再引用其他的變數。include using namespace std vo...

C 集錦二 引用和指標

1.什麼是 引用 宣告和使用 引用 需要注意哪些問題?引用就是某個目標變數的 別名 對引用的操作與對變數的操作效果完全相同。宣告乙個引用需要對其進行初始化,這不是新定義了乙個變數,它只是表示該引用名是目標變數名的乙個別名,它本身不是一種資料型別,因此引用不佔儲存單元。2.使用 引用 作為函式引數有哪...

C 21 引用和指標

一般說到誰和誰怎麼樣,要麼說兩者的相似點,要麼兩者的區別,這裡我們也要說二者的區別和聯絡,同時,也不僅僅是區別和聯絡這麼簡單,因為你可能會發現在變數賦值,函式傳參這兩點還是有很多值得品一品的。最直觀的賦值方面的區別 首先我們先說二者的區別和聯絡。int a 1 int p a int a 1 int...