第二章 變量和基本類型 1、計算機可尋址的最小內存塊稱為“字節byte”,存儲的基本單元稱為“字Word”,字是由幾個字節組成的,一般1字節由8比特構成,字則由32或者64比特構成,也就是4或者8字節 2、區間范圍:如果我們賦予了區間范圍外的數,則對應實際結果是該值對范圍取模后所得的余數,賦予超出范圍的值時,結果是未定義的,此時程序可能繼續工作、可能奔潰,也可能生成垃圾。 3、把負數轉換為無符號數類似于直接給無符號數賦一個負值,結果等于這個負數加上無符號數的模 4、可以將整形字面值寫作十進制數、八進制數(以0開頭)、十六進制數(以0x開頭) 5、轉義序列like /n之類自己在網上查找 轉義字符意義ASCII碼值(十進制)/a響鈴(BEL)007/b退格(BS) ,將當前位置移到前一列008/f換頁(FF),將當前位置移到下頁開頭012/n換行(LF) ,將當前位置移到下一行開頭010/r回車(CR) ,將當前位置移到本行開頭013/t水平制表(HT) (跳到下一個TAB位置)009/v垂直制表(VT)011/代表一個反斜線字符”/’092/’代表一個單引號(撇號)字符039/”代表一個雙引號字符034/?代表一個問號063/0空字符(NULL)000/ooo1到3位八進制數所代表的任意字符三位八進制/xhh1到2位十六進制所代表的任意字符二位十六進制 6、變量初始化,可以采用下面4種形式: int units_sold = 0; int units_sold = {0}; int units_sold{0}; int units_sold(0); 內置的局部變量必須初始化 7、變量只能被定義一次,但可以被多次聲明;變量定義必須且只能出現在一個文件中,其他用到該變量的文件必須對其進行聲明,絕對不能重復定義。在變量前面添加extern不賦值是聲明,賦值了就抵消了extren的作用,變為定義了。不加extern為聲明且定義。 8、命名規則:用戶自定義標識符不能連續出現兩個下劃線,也不能以下劃線連大寫字母開頭。此外,定義函數體外標識符不能以下劃線開頭。 9、嵌套域與全局局部變量: (1)::i訪問全局變量,如std::cout<<::reusedstd;輸出的是全局變量 (2)當作用域操作符左側為空,向全局域發出請求獲取作用域操作符右側名字對應的變量 (3)for循環里面重新賦值,超出了for作用范圍還是輸出全局時候的賦值 such as:
int i=100,sum=0;for(int i=0;i!=10;++i)sum+=i;std::cout<<i<<""<<sum<<std::endl;輸出i是100 10、引用與指針 引用:引用必須被初始化,就是指向同一個地址,且類型要保持一致,&取地址符 如int ival=1024; int &rel=ival; 指針:存放某個對象的地址,*解引用符 如int dval=2;int *pd=&dval; int *pd2=pd; 可知*pd=2; 空指針:三種形式,第一種常用 int *p1=nullptr; int *p2=0; int *p3=NULL; 注:指針也需要初始化,不然會訪問未明的地址,未知是否合法;指針賦值也要相同類型的 void* 指針:可以存放任意類型對象的地址。不能直接操作void指針所指的對象 復合類型指針:指向指針的指針 如 int ival=2014; int *pi=&ival;//pi指向一個int型的數; int **ppi=&pi;//ppi指向一個int型的指針; ppi→pi→ival(1024) 簡單讀這種復合型的辦法是:從右往左閱讀其定義 11、一些符號定義 (1)const:表示常量對象,定義為常量后如果賦值就會報錯,const int j=42; 指向常量的指針:不能改變指向對象的值 如,const int pie=12; const int *ptr=&pie;(放在外面表示其值) 常量指針:指針本身定為常量,指向的地址不能改變 如,int err=0; int *const ero=&err;(放在里面表示其值) 頂層const:表示指針本身是個常量 底層const:表示指針所指的對象是一個常量 (2)constexPR常量表達式:指值不會改變且在編譯過程就能得到計算結果的表達式 可以這樣constexpr int limit=mf+1; (3)typedef類別名,別名聲明 typedef double wages; wages base,*p;相當于double base,*p; (4)auto:讓編譯器通過初始值來推算變量的類型,auto定義必須有初始值 如 auto item=vall+vall2;由結果來推斷相加結果類型 類型不一致會報錯 如 auto i=0,pi=3.14;//wrong (5)decltype:選擇并返回操作數的數據類型 decltype(f()) sum=x;//sum的類型就是函數f的返回類型 decltype表達式里面是加了括號的變量,結果一定是引用 decltype((i)) d=&a; 12、自定義數據結構 (1)結構體,類數據結構 struct Sales_data{ std::string bookNo; unsigned units_sold=0; double revenue=0; }在里面已經初始化了,接下來是成員的使用,如 Sales_data data1,data2; data2.bookNo (2)頭文件保護符
#ifndef SALESITEM_H// we're here only if SALESITEM_H has not yet been defined #define SALESITEM_H //指令把一個名字設定為預處理變量。。。。。。#endif自己理解重寫一個Sales_data.h的頭文件,頭文件形式
#ifndef SALES_DATA_H#define SALES_DATA_H#include <string>struct Salse_data{ std::string bookNo; unsigned units_sold = 0; double revenue = 0.0;};#endif新聞熱點
疑難解答
圖片精選