int指针初始化_C++:变量,指针,引用const,extern,using,typedef,decltype关键字
算數(shù)類型
基本類型就是int,double, long long,這一系列東西。
其中有個(gè)特殊的類型是wchar,這個(gè)符號代表本機(jī)上支持的最大的擴(kuò)展字符級的字符。
(有的機(jī)器上有些擴(kuò)展字符級比較大,所以需要更長的擴(kuò)展字符來處理)
一般情況下,浮點(diǎn)數(shù)就用double就好了。
每一種字符還被分為了char和signed char,unsigned char等幾種,其中signed會(huì)比unsigned少一位表示區(qū)間,一般來說是-1和0,然后向兩側(cè)蔓延。
類型轉(zhuǎn)化
沒什么好說的,最常見的就是越界導(dǎo)致的數(shù)值丟失,以及不合理的類型的賦值。需要人工去解決。
字面值常量
字面值代表賦給對手一個(gè)值,比如可以給int賦給以0打頭的一個(gè)值,表示八進(jìn)制,也可以給0x表示十六進(jìn)制。
但要注意的是十六進(jìn)制最后也是要被翻譯成二進(jìn)制存儲(chǔ)的,所以最大值不能超過int的限制。
同時(shí),‘a(chǎn)'代表字符,"afsd"代表一個(gè)字符串,字符串的實(shí)際存儲(chǔ)中有一位是‘0’。
變量
變量其實(shí)是一種對象。
變量可以分為初始化和賦值兩個(gè)部分。這兩個(gè)步驟本身就難解難分。
只需要記住,變量通常都有自己默認(rèn)的賦值變量,如果在初始化的時(shí)候指定特有的值,那也是初始化,因?yàn)檫@個(gè)過程中不涉及變量值的擦除。
初始化的定式其實(shí)很標(biāo)準(zhǔn),那就是,=與數(shù)值的直接組合,=與{}包裹的數(shù)值的組合,直接在變量名后加()的組合。
變量聲明與定義的關(guān)系
聲明和定義可以分開的,這主要是通過extern 關(guān)鍵字來實(shí)現(xiàn)的。
這是為了解決同一個(gè)變量在眾多的文件里都需要使用的問題。
標(biāo)識符和作用域
標(biāo)識符就其實(shí)就是起的各種名字,在不同情況下,當(dāng)然有不同的規(guī)范。
作用域就是花括號外的可以用花括號外的。在花括號內(nèi)的無法影響到花括號外的。
復(fù)合類型
其實(shí)復(fù)合類型很簡單,包括 int &p,其中p是引用,值得是綁定到目標(biāo)對象上的別名,而int *p是一個(gè)真正有存儲(chǔ)空間的對象。
無論是指針還是引用,都可以先定義,再賦值。
如何賦值指針?
如何賦值引用?
如何解使用指針?
指向指針的指針的指針,就是一個(gè)不斷在int后加*號的套娃,一層一層的套。
引用綁定一次終身綁定,但指針是可以改的。
所以就有了p = &d;
當(dāng)然最騷的是這個(gè)標(biāo)示符 int *&r = p, 這代表了r 是一個(gè)指針的引用,可以發(fā)現(xiàn),指針是一種特殊的類型,而后才是引用符號。訣竅是,從右向左讀,越靠近變量的作用越明顯,int* &r,先是個(gè)引用,然后是指針。
Const
這個(gè)東西,簡直是讓人想死。
它的實(shí)質(zhì)是在一個(gè)變量初始化之后,這個(gè)東西就不可以改了。
const如果想要在一個(gè)文件中定義,在不同的文件中引用該怎么辦?
很簡單,只需要在const前面加上extern就可以了。
const的特殊性在于const的指針分為指針指向的目標(biāo)是常量,還是指針本身是一個(gè)常量。
一般是指向常量的指針,const int *p
但指針的常量是 int * const p,還是從右往左看,最前面的范圍更大。先聲明const是什么,然后是int*的類型。
有一個(gè)典型的讀法:p is a point to int const. 遇到就替換成point to,遇到p,就替換成p is a.然后int * const p 就是 p is a const point to int.那就是指向int的常量指針。
constexpr和常量表達(dá)式
const是指值不會(huì)改變并且在編譯過程就能得到計(jì)算結(jié)果的表達(dá)式。
兩個(gè)條件,首先要const這樣才能在編譯過程中獲得,其次要是赤裸裸的值,不能是一個(gè)函數(shù),需要在運(yùn)行時(shí)才能獲得結(jié)果。
constexpr變量
這個(gè)機(jī)制是人為的指定在賦值的過程中進(jìn)行編譯。其實(shí)和const一樣。
但是constexpr是有限制的,比如自定義的類,string等都不能被定義。并且constexpr可以定義一些簡單的函數(shù)表達(dá),這和const不同。
這個(gè)東西,可能是應(yīng)用在嵌入式開發(fā)的吧,以后再熟悉。
處理類型:typedef,using
1.類型是難于拼寫的,類型多了就很煩。
2.代碼一長,根本搞不清楚類型是什么,需要回頭尋找?guī)椭?/p>
(我覺得這完全不是問題啊,以我目前的開發(fā)經(jīng)驗(yàn),沒有遇到過這種情況)
只要知道兩種方法,一種是typedef,一種是using 就行。
AUTO
Auto不需要知道太多
注意auto在推斷的過程中,有可能是和初始值不同。
decltype類型指示符
decltype的意思是可以自動(dòng)推測表達(dá)式的類型,然后用推測出來的類型去賦值一個(gè)東西。
比如 decltype(a) b =1, 這個(gè)b就是a的類型。
自定義數(shù)據(jù)結(jié)構(gòu)
其實(shí)就是struct,這個(gè)沒啥說頭。
唯一的要求就是希望建立struct的時(shí)候,struct分開寫。
編寫自己的頭文件 #ifdef
我們通常把string,自定義類放在一個(gè)頭文件中,然后在main函數(shù)中加上.h文件中。
這個(gè)過程中,其實(shí)是一個(gè)預(yù)處理器的處理過程,這個(gè)過程竟然是在編譯之前的。
當(dāng)預(yù)處理器看到# include 時(shí),就會(huì)直接用頭文件對#include進(jìn)行替換。
有一個(gè)特性是頭文件保護(hù)符,這個(gè)保護(hù)符其實(shí)是驗(yàn)證頭文件中的是否成功加入到了代碼中。
這個(gè)東西,為了保證唯一性,一般是和頭文件的#include一起添加的。
只要無腦添加這個(gè)東西就行。
總結(jié)
以上是生活随笔為你收集整理的int指针初始化_C++:变量,指针,引用const,extern,using,typedef,decltype关键字的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java毕设用的框架_分享四个Java低
- 下一篇: QT链接DLL库问题记录