C++基本入門教程(四):列舉和指針。本站提示廣大學習愛好者:(C++基本入門教程(四):列舉和指針)文章只能為提供參考,不一定能成為您想要的結果。以下是C++基本入門教程(四):列舉和指針正文
我曾經把《C++ Primer》一書預備好了,假如這本《C++ Primer Plus》持續這麼瞎鬧的話,我就換配角~!
沒錯,這書連if while都還沒引見呢,就開端把指針搬出來了,固然只是簡略引見..
這目次編排我也是醒了。
那末,依照書上的進度,明天來初步說說指針。
但,明天周五,你懂的,就隨意水一下,由於我怕到周一又忘了。
1.列舉
那末,列舉是甚麼呢?(小若:等等~!說好的指針呢?)
年夜部門高等說話裡應當都有列舉了,所以也沒甚麼好引見的。
應用是如許的:
// 界說
enum MonsterType {
enMonster_nor,
enMonster_hard,
}
// 聲明一個列舉變量
MonsterType mType;
// 應用
if(mType == enMonster_nor) {
log("去逝世吧~!");
}
else if(type == enMonster_hard) {
log("哦呵呵,您好,這是我這個月的薪水,都給您了哦,我最崇敬您了,您是我這輩子最....(1萬字省略)");
}
2.甚麼是指針
由於這不是真實的C++教程,只是彌補罷了,所以基本概念我就不說。
指針就是可以或許指向內存空間的器械,沒錯,它只是指向內存空間,它自己不是內存空間。
好了,不絮聒。
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.停止了
好,明天就水到這裡了~下次見