C++基礎(chǔ)入門教程(四):枚舉和指針
我已經(jīng)把《C++ Primer》一書準(zhǔn)備好了,如果這本《C++ Primer Plus》繼續(xù)這么瞎鬧的話,我就換主角~!
沒錯,這書連if while都還沒介紹呢,就開始把指針搬出來了,雖然只是簡單介紹..
這目錄編排我也是醒了。
那么,按照書上的進度,今天來初步說說指針。
但,今天周五,你懂的,就隨便水一下,因為我怕到周一又忘了。
1.枚舉
那么,枚舉是什么呢?(小若:等等~!說好的指針呢?)
大部分高級語言里應(yīng)該都有枚舉了,所以也沒什么好介紹的。
使用是這樣的:
// 定義
enum MonsterType {
enMonster_nor,
enMonster_hard,
}
// 聲明一個枚舉變量
MonsterType mType;
// 使用
if(mType == enMonster_nor) {
log("去死吧~!");
}
else if(type == enMonster_hard) {
log("哦呵呵,您好,這是我這個月的薪水,都給您了哦,我最崇拜您了,您是我這輩子最....(1萬字省略)");
}
2.什么是指針
因為這不是真正的C++教程,只是補充而已,所以基礎(chǔ)概念我就不說。
指針就是能夠指向內(nèi)存空間的東西,沒錯,它只是指向內(nèi)存空間,它本身不是內(nèi)存空間。
好了,不嘮叨。
3.聲明指針
聲明指針變量是很簡單的事情,如下代碼:
int num = 10;
int *p = #
沒錯,即使是我們以前的普通變量也是有內(nèi)存地址的,使用&符號就能取得它的內(nèi)容地址。
然后,我們的指針變量p就是專門用來存放內(nèi)存地址的。
在聲明變量的時候,加上*號就代碼這是指針變量。
記住,這是聲明~接下來如果沒學(xué)過指針的,就會混亂了。
4.使用指針
指針要怎么使用呢?很簡單,如下代碼:
int num = 10;
int *p = #
*p = 20;
std::cout << *p << "\n";
std::cout << num << "\n";
最后,*p和num都是20。
p是指針變量,它保存了num變量的內(nèi)存地址。
而*p就是這個內(nèi)存地址上面的值,也就是我們的變量num的值了。
于是,*p = 20 就代表把這個內(nèi)存地址上的值改為20。
重點來了:
1.假設(shè)num的內(nèi)存地址0xffffff,這個地址上的存儲的內(nèi)容是數(shù)字10
2.p是一個指針,它保存了num的內(nèi)存地址,所以p的值是0xffffff,這個地址上的存儲的內(nèi)容是數(shù)字10
3.*p代表是p指向的那個內(nèi)存地址上面所存儲的內(nèi)容,也就是數(shù)字10,換句話說,*p的值是10
4.指向*p = 20,相當(dāng)于把p指向的內(nèi)存地址上面的內(nèi)容改為20
5.由于num的內(nèi)存地址就是p指向的地址,所以num在內(nèi)存中保存的值已經(jīng)改變了
6.最終num的值也會變成20
明白了么?(小若:用中文再說一遍)
嗯,用中文再說一遍的話,那就是:
因為p指向的內(nèi)存地址就是num所在的內(nèi)存地址,所以通過num和*p都能改變這個地址上的內(nèi)容。
一句話,此刻*p相當(dāng)于num,可以進行各種操作(賦值、加減法等等)
(小若:早點說中文多好啊!非得顯擺你那半調(diào)子日語嗎??。?/p>
5.指針外傳
有時候,我們可以這樣聲明指針:
int *num;
// 但你千萬不能這么使用
*num = 100;
咋一看,這么使用好像很正常,和剛剛說的一樣。
但,請注意,指針num在聲明的時候并沒有賦值,也就是說,這個指針現(xiàn)在不知道是指向哪里的。
所以,隨便使用這樣一個不知道是指向哪的指針,很可能會破壞我們的程序。
比如吖,我們本來是想聲明一個指向我們一根頭發(fā)的指針,但是,我們沒有給它賦值。
于是,這指針就不知道指向哪了,它可能還指向它以前曾經(jīng)指過的地方。
萬一這指針以前指向的地方是我們的腰部以下的部位呢?
萬一我們用這個指針執(zhí)行了“剪掉指針?biāo)傅牡胤?,全剪了”?br />
沒錯,本以為剪的是頭發(fā),結(jié)果呢!把腰部以下給剪了!
這下半輩子怎么辦,就再也不能跑步了(你想哪去了?)
6.結(jié)束了
好,今天就水到這里了~下次見
上一篇:C語言實現(xiàn)將字符串轉(zhuǎn)換為數(shù)字的方法
欄 目:C語言
下一篇:VC多線程編程詳解
本文標(biāo)題:C++基礎(chǔ)入門教程(四):枚舉和指針
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/3186.html
您可能感興趣的文章
- 04-02c語言沒有round函數(shù) round c語言
- 01-10深入理解C++中常見的關(guān)鍵字含義
- 01-10使用C++實現(xiàn)全排列算法的方法詳解
- 01-10c++中inline的用法分析
- 01-10用C++實現(xiàn)DBSCAN聚類算法
- 01-10全排列算法的非遞歸實現(xiàn)與遞歸實現(xiàn)的方法(C++)
- 01-10C++大數(shù)模板(推薦)
- 01-10淺談C/C++中的static與extern關(guān)鍵字的使用詳解
- 01-10深入C/C++浮點數(shù)在內(nèi)存中的存儲方式詳解
- 01-10深入理解C/C++混合編程


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 04-02jquery與jsp,用jquery
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10C#中split用法實例總結(jié)
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10delphi制作wav文件的方法
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05織夢dedecms什么時候用欄目交叉功能?