C 基礎的不能再基礎的學習筆記 復合型別

2021-08-14 16:29:40 字數 1657 閱讀 5787

復合型別基於其他型別定義的型別。

c++中最常用的復合型別是引用指標

一、引用

引用是給物件起的別名,它代表了物件,但它不是乙個物件

一般在變數初始化時,初始值會被拷貝到新建的物件中,然而在定義引用時,程式將引用和它的初始值繫結在一起,一旦初始化完成,引用將和它的初始物件一直繫結在一起,無法令引用重新繫結到另一物件,因此引用必須初始化

引用的型別要與繫結的物件型別嚴格匹配,且只能繫結在物件上,不能繫結字面值(const除外)。

格式為: type &引用名 = type型別的物件名;

二、指標

1. 指標與引用的不同\指標

引用自身型別

物件別名

初始化可以不初始化

必須初始化

是否可以表示不同物件是否

2.指標的定義

指標存放的是某個物件的位址

以上定義空指標的三種方法,都是將0賦值給指標。其中最常用的是nullptr,它是一種特殊型別的字面值,可以被轉換成任意指標型別。

建議在定義指標時初始化所有指標,防止程式因未初始化指標而崩潰。例如:指標未被初始化,分配給指標的記憶體中有資料,則該資料會被當做是位址值。訪問該指標,則會訪問本不該去訪問的位址。

3.利用指標訪問物件

我們利用解引用符*來訪問被指標指向的物件(若指標沒有賦值,則不能解引用)。

4.void*指標

void*是一種特殊型別的指標,可以指向任意型別的物件。

格式:    void *指標名 = &任意型別;

但是,由於不知道指標指向物件的型別,我們無法對物件進行操作(包括取出物件)。

三、復合型別的定義

1.定義多個變數

在定義復合型別的多個變數時,容易產生誤解。首先,要知道,變數宣告是由基本資料型別宣告符組成的。

例如:int* p1,p2;  在這條語句中,int為基本資料型別,*是修飾p1的型別修飾符,對p2沒有任何影響。因此,這條語句宣告了int型別的指標p1、變數p2。

2.指標的指標

通過修飾符*的個數可以區分指標的級別。相對的,在解引用時也要根據需要調整解引用符的個數。

int a = 10;

int *b = &a;

// c為指標b的指標

int **c = &b;

std:

:cout

<< **c << std:

:endl;

3.指標的引用
int i = 42;

int *p;

// r為指標p的引用

int *&r = p;

面對一條複雜的指標或引用宣告語句時,將變數名定為起點,從右向左讀,離變數名最近的修飾符影響該變數的型別,其餘剩下的為該變數引用或指向的型別。

C 基礎的不能再基礎的學習筆記 型別轉換

一 隱式轉換int ival 3.14 3 在執行上述語句時,編譯器先將int型別的3轉換為double型別,之後相加,再將所得結果轉換為int型別初始化ival。顯然,這裡的型別轉換無須程式設計師的介入,稱之為隱式轉換。1.算術轉換 算數轉換就是將一種算術型別 寬度小的 轉換為另一種算術型別 寬度...

Linux基礎命令 最基礎的,不能再少了

一 首先說一下linux的基本最基本的就是開啟終端了,一般redhat的終端右鍵選單裡面就有,ubuntu的終端需要開啟選單在裡面尋找,不過可以拖桌面上比較方便。二 開啟了終端以後會看到shell程序的介面,比如root localhost 這個是redhat一般的開啟介面,ubuntu 需要自行獲...

不能再菜的酸菜的python學習筆記

0324 6.1 集合型別及操作 1 集合使用 和set 建立 2 集合間的操作 交 差 並 補 比較 3 集合型別的方法 add 增加元素 discard 清除元素 pop 取出元素給使用者 等 4 集合型別主要應用 包含關係比較 資料去重 set ls 0325 6.2序列型別及操作 1 序列包...