您好,登錄后才能下訂單哦!
本篇內容介紹了“c++變量和基本類型詳解”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
前言
類型轉換
變量聲明與定義的關系
變量命名規范
復合類型
引用
指針
const限定符
const的引用
指針和const
constexpr和常量表達式
auto類型說明符
decltype
頭文件保護符
我只寫我覺得重要的,同時把一些我覺得比較重要的習題做一下
類型所能代表的范圍決定了轉換的過程
比如:當我們把一個非布爾類型的算數值賦給布爾類型時,初始值為0則代表結果為false,否則結果為true
當把浮點數賦給整數時,會舍去小數部分。
當賦給無符號整數的值大于它表示的范圍時,結果是這個值對(無符號整數最大值+1)取模。
變量聲明規定了變量的類型和名字,在這一點上定義與之相同,但是除此之外,定義還申請存儲空間,也可能為變量賦一個初始值。如果要聲明一個變量而非定義它,則使用extern關鍵詞,但是如果給extern修飾的變量初始化了,就抵消了extern的作用
標識符體現具體含義
變量名一般用小寫字母
用戶自定義的類名一般用大寫字母開頭,如Sales_item
如果標識符由多個單詞組成,則單詞之間應該有明顯區別,如student_loan或者studentLoan
符合類型是基于基于其他類型定義的類型。
引用為對象起了另一個名字,引用類型引用另一種類型通過將聲明符寫成&d的形式來定義引用類型,其中d是聲明的變量名
引用不是對象,而是一個已經存在的對象的另一個別名
由于引用不是對象,所以不存在引用的引用
指針本身就是個對象,允許對指針賦值和拷貝,指針無需在定義時賦初值,和其他內置類型一樣,在塊作用域內定義的指針如果沒有被初始化,也將有一個不確定的值。
指針的值(即地址)應該屬于下列4種狀態之一
指向一個對象
指向緊鄰對象所占空間的下一個位置
空指針
無效指針(上述指針的其他情況)
*關于指向緊鄰對象所占空間所占對象的下一個位置,說實話沒太看懂,首先我在知乎查找了一下,然后又查看了一下英文版的c++ primer,發現其意思就是對象末尾的與其相鄰的下一個位置,比如:
int t=5;int p=&t,則p+1就代表這個緊鄰對象所占空間的下一個位置,但是這個對象沒有定義,所以原則上是不能解引用的
默認情況下,const 對象僅在文件內有效
可以把引用綁定到const對象上去,就像綁定到其他對象上去一樣,稱之為對常量的引用,對常量的引用不能用來用作修改其綁定的對象,比如:
有const int a=3,const int &b=a則&b=34,int &c=b這種行為是不允許的,因為&b=34會改變對象的值,而此時是常量,而int &c=b若可以的話則能通過&c=34來改變對象的值,這顯然是不能允許的。
引用所引用的類型與其所引用對象的類型一致
由于指針本身就是個對象,因此指針本身是不是常量以及指針指向的對象是不是常量就是兩個獨立的問題。用頂層const(top-level const)代表指針本身是個常量,而用名詞底層const(low-level const)代表指針指向的對象是個常量
常量表達式(const expression)代表值不會改變并且在編譯過程中就能得到計算結果的表達式。
例子:
const int max_files=20 //是常量表達式
const limit =max_files+1//limit是常量表達式
int ret=20//不是常量表達式,因為其值會改變
const int sa=get_size()//不是常量表達式,因為其值需要到運行期間得到
常量表達式是由它的數據類型和初始值來決定的
c++11新規定允許將變量聲明為constexpr類型以便由編譯器來驗證變量是否為常量表達式,聲明為constexpr的變量一定是一個常量,而且必須由常量表達式初始化 例:constexpr int sa=20
在constexpr限定符種如果定義了一個指針,限定符constexpr僅對指針有效,對指針指向的對象無關
其作用是讓編譯器去分析表達式的類型,例:auto a=a1+a2,編譯器會自動將a的類型轉換成a1+a2結果的類型。
其作用是得出表達式的類型 例:decltype(f()) sum=y,sum的類型就是f()返回值的類型
如果表達式的類型是解引用操作,則decltype將得到引用類型,因為解引用操作能給得到指針所指向的對象,并且能改變對象的值,所以是引用
如果decltype使用一個不加括號的變量則得到的結果是該變量的類型,如果使用一個加括號的變量,則得到的結果是引用類型,因為加了括號就代表這個變量是一個表達式,而變量是作為左值的特殊表達式,所以是引用
#ifdef 當且僅當變量已定義時為真,#ifndef當且僅當變量未定義時為真,一旦檢查得到為真則一直運行直到遇到#endif為止
“c++變量和基本類型詳解”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。