C 基礎入門教程(四) 列舉和指標

2022-10-03 13:18:10 字數 2160 閱讀 7134

我已經把《c++ primer》一書準備好了,如果這本《c++ primer plus》繼續這麼瞎鬧的話,我就換主角~!

沒錯,這書連if while都還沒介紹呢,就開始把指標搬出來了,雖然只是簡單介紹..

這目錄編排我也是醒了。

那麼,按照書上的進度,今天來初步說說指標。

但,今天周五,***,就隨便水一下,因為我怕到周一又忘了。

1.jjhttiecke列舉

那麼,列舉是什麼呢?(小若:等等~!說好的指標呢?)

大部分高階語言裡應該都有列舉了,所以也沒什麼好介紹的。

使用是這樣的:

複製** **如下:

// 定義

enum monstertype

// 宣告乙個列舉變數

monstertype mtype;

// 使用

if(mtype == enmonster_nor)

else if(type == enmonster_hard)

2.什麼是指標

因為這不是真正的c++教程,只是補充而已,所以基www.cppcns.com礎概念我就不說。

指標就是能夠指向記憶體空間的東西,沒錯,它只是指向記憶體空間,它本身不是記憶體空間。

好了,不嘮叨。

3.宣告指標

宣告指標程式設計客棧變數是很簡單的事情,如下**:

複製** **如下:

int num = 10;

int *p = #

沒錯,即使是我們以前的普通變數也是有記憶體位址的,使用&符號就能取得它的內容位址。

然後,我們的指標變數p就是專門用來存放記憶體位址的。

在宣告變數的時候,加上*號就**這是指標變數。

記住,這是宣告~接下來如果沒學過指標的,就會混亂了。

4.使用指標

指標要怎麼使用呢?很簡單,如下**:

複製** **如下:

int num = 10;

int *p = #

*p = 20;

std::cout << *p << "\n";

std::cout << num << "\n";

最後,*p和num都是20。

p是指標變數,它儲存了num變數的記憶體位址。

而*p就是這個記憶體位址上面的值,也就是我們的變數num的值了。

於是,*p = 20 就代表把這個記憶體位址上的值改為20。

重點來了:

1.假設num的記憶體位址0xffffff,這個位址上的儲存的內容是數字10

2.p是乙個指標,它儲存了num的記憶體位址,所以p的值是0xffffff,這個位址上的儲存的內容是數字10

3.*p代表是p指向的那個記憶體位址上面所儲存的內容,也就是數字10,換句話說,*p的值是10

4.指向*p = 20,相當於把p指向的記憶體位址上面的內容改為20

5.由於num的記憶體位址就是p指向的位址,所以num在記憶體中儲存的值已經改變了

6.最終num的值也會變成20

明白了麼?(小若:用中文再說一遍)

嗯,用中文再說一遍的話,那就是:

因為p指向的記憶體位址就是num所在的記憶體位址,所以通過num和*p都能改變這個位址上的內容。

一句話,此刻*p相當於num,可以進行各種操作(賦值、加減法等等)

(小若:早點說中文多好啊!非得顯擺你那半調子日語嗎?程式設計客棧!)

5.指標外傳

有時候,我們可以這樣宣告指標:

複製** **如下:

int *num;

// 但你千萬不能這麼使用

*num = 100;

咋一看,這麼使用好像很正常,和剛剛說的一樣。

但,請注意,指標num在宣告的時候並沒有賦值,也就是說,這個指標現在不知道是指向**的。

所以,隨便使用這樣乙個不知道是指向哪的指標,很可能會破壞我們的程式。

比如吖,我們本來是想宣告乙個指向我們一根頭髮的指標,但是,我們沒有給它賦值。

於是,這指標就不知道指向哪了,它可能還指向它以前曾經指過的地方。

萬一這指標以前指向的地方是我們的腰部以下的部位呢?

萬一我們用這個指標執行了「剪掉指標所指的地方,全剪了」。

沒錯,本以程式設計客棧為剪的是頭髮,結果呢!把腰部以下給剪了!

這下半輩子怎麼辦,就再也不能跑步了(你想哪去了?)

6.結束了

好,今天就水到這裡了~下次見

本文位址:

C 入門9 2 列舉

為什麼會有列舉?多人同時開發erp人員管理系統 儲存人員資訊有 姓名,性別,年齡,部門,職位。簡言之 如果希望得到乙個固定集合的值,就採用列舉。宣告方式 public enum 列舉名 值1,值2,值3,型別轉換 列舉與int相互轉換 要獲得列舉的值,只要轉換為string型別。列舉與string相...

C 基礎 4 列舉

列舉和陣列 結構有些像。下面做個對比 列舉 enum 新型別名 陣列 資料型別 陣列名 元素個數 結構 struct 新型別名稱 列舉的不同之處在於,列舉量自己有自己的預設值,不同於陣列結構需要給成員 元素 賦值。比如,第乙個列舉量的值預設為0,第二個是1,第三個是2 以此類推。所以,如果定義時列舉...

C語言基礎教程(7)列舉

把乙個事物所以可能的取值一一枚舉出來 目的 列舉 include 自定義了乙個資料型別,並沒有定義變數,該資料型別的名字 enum weekday enum weekday 分號 int main void 在vc 6.0輸出結果 414 目的 列舉2 include enum weekday vo...