1、int *p = new int[10];//理解寂玲,數(shù)組的動態(tài)分配
//new int[10] 新申請一段可以保存10個int型整數(shù)的內(nèi)存空間
//int* p 定義一個int型指針
//int *p=new int[10] 讓int型指針指向申請的內(nèi)存空間的首地址塔插!
2、double d3 = 1.25e + 20拓哟;
1.25e + 20 表示1.25的10的20次方想许。
3、強(qiáng)制類型轉(zhuǎn)換
強(qiáng)制類型轉(zhuǎn)化沒有四舍五入。
4流纹、函數(shù)指針中使用typedef
typedef int (*PF)(int *, int);
以上定義了一個函數(shù)指針糜烹。
一般來說,用typedef關(guān)鍵字會使該聲明更簡單易懂漱凝。
int (*PF)(int *, int);
也就是說疮蹦,PF是一個函數(shù)指針“變量”。當(dāng)使用typedef聲明后茸炒,則PF就成為了一個函數(shù)指針“類型”愕乎,即:
typedef int (*PF)(int *, int);
這樣就定義了返回值的類型。然后壁公,再用PF作為返回值來聲明函數(shù):
PF ff(int);
5感论、函數(shù)的返回值和函數(shù)的調(diào)用參數(shù)值注意
在返回值和調(diào)用參數(shù)值的時候需要考慮到使用的是地址還是值本身。
(一)需要返回值和調(diào)用參數(shù)值為地址的時候紊册。需寫指針名比肄、者函數(shù)名、&取地址的變量囊陡。
(二)需要使用值本身的時候薪前。需要傳遞的就是*p(指針?biāo)赶虻膬?nèi)容)、變量关斜。
6示括、運(yùn)算符的結(jié)合性?
運(yùn)算符的結(jié)合性是指相同優(yōu)先級的運(yùn)算符在同一個表達(dá)式中痢畜,且沒有括號的時候垛膝,運(yùn)算符和操作數(shù)的結(jié)合方式,通常有從左到右結(jié)合和從右到左結(jié)合兩種方式丁稀。也就是同一的時候哪邊的優(yōu)先級高于哪邊吼拥。
舉個例子,假設(shè)是一個運(yùn)算符线衫,又有表達(dá)式abc凿可,如果是左結(jié)合的,那么該表達(dá)式被解析為(ab)c授账,如果是右結(jié)合的枯跑,那么該表達(dá)式將被解析為a(b~c)。比如上表中三目運(yùn)算符?:是從右向左結(jié)合的白热,那么下面的表達(dá)式a > b ? b > c ? 1 : 0 : 2將被解析為 a > b ? (b > c ? 1 : 0) : 2敛助。
參考網(wǎng)址
7、if/else結(jié)構(gòu)_嵌套結(jié)構(gòu)
if (...){...}
else if (...){...}
else if (...){...}
else {...}
直觀表達(dá)
8屋确、flaot和double的精度纳击?
float是32位续扔,double是64位
float32位中, 有1位符號位焕数,8位指數(shù)位纱昧,23位尾數(shù)位;
double64位中堡赔,1位符號位砌些,11位指數(shù)位,52位尾數(shù)位加匈。
取值范圍看指數(shù)部分
float是有符號型存璃,其中,8位指數(shù)位雕拼,2^8=(-128—127)纵东,
因此實際的范圍是-2128—2127,約為-3.4E38—3.4E38啥寇;
同理double范圍約是-1.7E308—1.7E308偎球。
精度是看尾數(shù)部分
float尾數(shù)位23位,2^23=8.3E6辑甜,6位衰絮,所以float的有效位數(shù)是6位;
double尾數(shù)52位磷醋,2^52=4.5E15猫牡,15位,所以double的有效位數(shù)是15位邓线。
9淌友、浮點數(shù)在選擇(判斷)結(jié)構(gòu)中
比較方式參考:
10、float x = 1.0f;
f 代表這個數(shù)據(jù)是float類型的常量骇陈;
如果你直接輸入1.0就是double類型 ,當(dāng)你賦給float類型的時候就會拋異常了震庭。
11、int a, b, c = 0; 和 int a = 0, b = 0, c = 0;
For your first code block, int a, b, c = 0;, you are not initializing the primitive types. You cannot use a and b until it is assigned something, event if a = default(int) or just a = 0. Until first assignment, you'll get a compilation error that the variable must be assigned before first use.
Now if you are comparing int a = 0, b = 0, c = 0; and int a = 0; int b = 0; int c = 0;, those are identical.
第二種方式才是正確的初始化方式你雌。
12器联、new的使用
new用法:
1. 開辟單變量地址空間
1)new int; //開辟一個存放數(shù)組的存儲空間,返回一個指向該存儲空間的地址.int *a = new int 即為將一個int類型的地址賦值給整型指針a.
2)int *a = new int(5) 作用同上,但是同時將整數(shù)賦值為5
2. 開辟數(shù)組空間
一維: int *a = new int[100];開辟一個大小為100的整型數(shù)組空間
二維: int **a = new int[5][6]
三維及其以上:依此類推.
一般用法: new 類型 [初值]
delete用法:
1. int *a = new int;
delete a; //釋放單個int的空間
2.int *a = new int[5];
delete [] a; //釋放int數(shù)組空間
要訪問new所開辟的結(jié)構(gòu)體空間,無法直接通過變量名進(jìn)行,只能通過賦值的指針進(jìn)行訪問.
用new和delete可以動態(tài)開辟,撤銷地址空間.在編程序時,若用完一個變量(一般是暫時存儲的數(shù)組),下次需要再用,但卻又想省去重新初始化的功夫,可以在每次開始使用時開辟一個空間,在用完后撤銷它.
13、靜態(tài)檢查
靜態(tài)數(shù)據(jù)類型檢查語言也叫靜態(tài)類型語言婿崭,與此相對有動態(tài)類型語言拨拓。
(1)動態(tài)類型語言:動態(tài)類型語言是指在運(yùn)行期間才去做數(shù)據(jù)類型檢查的語言,也就是說逛球,在用動態(tài)類型的語言編程時千元,永遠(yuǎn)也不用給任何變量指定數(shù)據(jù)類型苫昌,該語言會在你第一次賦值給變量時颤绕,在內(nèi)部將數(shù)據(jù)類型記錄下來幸海。Python和Ruby就是一種典型的動態(tài)類型語言,其他的各種腳本語言如VBScript也多少屬于動態(tài)類型語言奥务。
(2)靜態(tài)類型語言:靜態(tài)類型語言與動態(tài)類型語言剛好相反物独,它的數(shù)據(jù)類型是在編譯期間檢查的,也就是說在寫程序時要聲明所有變量的數(shù)據(jù)類型氯葬,C/C++是靜態(tài)類型語言的典型代表挡篓,其他的靜態(tài)類型語言還有C#、JAVA等帚称。
注意:C++并沒有提供對指針有效性的靜態(tài)檢查官研。
對于動態(tài)語言與靜態(tài)語言的區(qū)分,套用一句流行的話就是:Static typing when possible, dynamic typing when needed闯睹。
14戏羽、memset用法
void *memset(void *s, int ch, [size_t]
函數(shù)解釋:將s中當(dāng)前位置后面的n個字節(jié) (typedef unsigned int size_t )用 ch 替換并返回 s 。
memset:作用是在一段內(nèi)存塊中填充某個給定的值楼吃,它是對較大的[結(jié)構(gòu)體]或[數(shù)組]清零操作的一種最快方法始花。