99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

C 語言筆記

C 語言筆記 筆記會不定期補(bǔ)充更新數(shù)據(jù)類型基本類型數(shù)據(jù)整型整型 -- int 4字節(jié)短整型 -- short int 2字節(jié)長整型 -- long int 8字節(jié)浮點(diǎn)數(shù)【實(shí)數(shù)】單精度浮點(diǎn)數(shù) -- float 4字節(jié)雙精度浮點(diǎn)數(shù) -- double 8字節(jié)字符char 1字節(jié)復(fù)合類型數(shù)據(jù)結(jié)構(gòu)體、 枚舉、共用體變量# includestdio.h int main(void) { int i; i 3; printf(i %d\n,i);//3最終是存放在內(nèi)存中程序終止后3所占的空間被釋放 return 0; }讓內(nèi)存條中的一塊空閑單元與所定義變量產(chǎn)生關(guān)聯(lián)。變量的本質(zhì)就是內(nèi)存中的一段存儲空間程序終止后內(nèi)存空間被釋放。變量必須初始化就是賦值的原因替代內(nèi)存中原來的垃圾值。單個字符變量要用單引號括起來字符串要用雙引號括起來。字符串不能賦給單個字符變量char。單引號也不能括字符串。printf用法將變量的內(nèi)容輸出到顯示器上。1.printf字符串;2.printf (輸出控制符輸出參數(shù));3.printf輸出控制符1 輸出控制符2 ......,輸出參數(shù)1,輸出參數(shù)2.........);4.printf(輸出控制符 非輸出控制符,輸出參數(shù));輸出控制符%d %ld %c %f %lf %x %s輸出控制符可以清楚的表明所輸出的內(nèi)容所表達(dá)的具體含義。scanf用法通過鍵盤將數(shù)據(jù)輸入到變量中。1.scanf(輸入控制符,輸入變量);將輸入的數(shù)據(jù)放到輸入變量地址下存放。2.含有非輸出控制符例如逗號、字母等等。非輸入控制符必須原樣輸入。#includestdio.h int main(void) { int i; scanf(m%d,i); //m是非輸出控制符 printf(i %d\n,i); return 0; } /* 輸入123 輸出垃圾值 輸入m123 輸出123 輸入m123n 輸出123 先輸入m時計算機(jī)認(rèn)為合法輸入123也合法輸入n不合法。 */3.應(yīng)該編寫代碼對用戶的非法輸入做適當(dāng)處理while ((ch getchar()) ! \n)continue;這段代碼的功能是從標(biāo)準(zhǔn)輸入讀取字符并且忽略這些字符直到遇到換行符為止。流程控制什么是流程控制 程序代碼的執(zhí)行順序。順序、選擇、循環(huán)。順序1. if只能控制一條語句的執(zhí)行else也只能控制一條語句。所以在執(zhí)行多條語句時要加{ } 。if...else...為順序執(zhí)行語句若出現(xiàn)多個條件同時成立則執(zhí)行最靠前的一條。2. 一個分號代表一條語句的結(jié)束。循環(huán)for循環(huán)# includestdio.h int main(void) { int i; int sum sum i; for(i1;i4;i) //執(zhí)行完條件判斷語句后執(zhí)行條件執(zhí)行語句然后才會執(zhí)行i sum sum i; printf(sum %d\n,sum); //在for循環(huán)結(jié)束后才會執(zhí)行printf()指令 return 0; }1.for循環(huán)同樣只能控制一條語句控制多條語句加括號。在for循環(huán)結(jié)束后才會執(zhí)行printf()指令。2. 執(zhí)行完條件判斷語句后執(zhí)行條件執(zhí)行語句然后才會執(zhí)行i。3.強(qiáng)制類型轉(zhuǎn)換格式(數(shù)據(jù)類型)(表達(dá)式)功能把表達(dá)式的值強(qiáng)制轉(zhuǎn)化為前面所執(zhí)行的數(shù)據(jù)類型。4.浮點(diǎn)數(shù)存儲帶來的問題float和double都不能保證可以精確的存儲一個小數(shù)。舉例有一個浮點(diǎn)型變量x如何判斷x的值是否為零if(x 0) //不一定能判斷正確判斷條件可以寫成if|x-0.000001| 0.000001是else不是while循環(huán)1.格式while表達(dá)式執(zhí)行語句2.while同樣只能控制一條語句的執(zhí)行。若執(zhí)行語句含有多條語句要注意語句的排列順序其是順序執(zhí)行的。do.....while:格式do{...........}while(表達(dá)式);1.do......while主要用于人機(jī)交互,至少執(zhí)行一遍while和for可能一遍都不執(zhí)行。選擇switch格式#includestdio.h int main(void) { int val; printf(請輸入樓層); scanf(%d,val); switch (val) { case 1: printf(1層開); break; case 2: printf(1層開); break; default: printf(還沒有); break; } return 0; }1. 在switch中case、default是程序的入口然后順序執(zhí)行break是程序的出口 。2.所有case后面的常量表達(dá)式只能是枚舉常量、數(shù)值常量、字符常量、常變量或宏名中的一種注意普通變量和枚舉變量是不能作為case后面的常量表達(dá)式使用的。3.switch后邊括號里的表達(dá)式可以使任何類型。4.break的用法用在循環(huán)中則是用來終止循環(huán)。用于switch則是用來終止switch終止距離最近的switch。不能直接用于if除非if屬于循環(huán)內(nèi)部的一個子句。在循環(huán)中if后面的break是用來終止循環(huán)的不是用來終止if的。在多層循環(huán)中break只能終止距離他最近的循環(huán)。5.continue的用法#includestdio.h int main(void) { int i; char ch; scanf(%d,i); printf(i %d\n,i); while ((chgetchar()) ! \n) continue; //只有檢測到輸入為換行符時才執(zhí)行continue之后的指令 int j; //功能可以檢查非法輸入 scanf(%d,j); //例輸入1 da dasd\n 輸出1 da dasd printf(j %d\n,j); //只有在輸入\n后才會輸出正確的輸入字符 return 0; }主要用在循環(huán)語句中當(dāng)執(zhí)行到continue時跳過在本次循環(huán)中continue后面的程序直接去判斷下一次循環(huán)條件是否滿足。數(shù)組數(shù)組的定義int i[5] {1,2,3,4,5}; //定義長度為5的數(shù)組完全初始化 int i[5] {1,2,3,}; //未完全初始化未初始化的位為0int i[5] ; //未初始化所有位是垃圾值int i[5] {0}; //清零數(shù)組的作用為n個變量連續(xù)分配存儲空間所有變量數(shù)據(jù)類型必須相同。為了解決大量同類型數(shù)據(jù)的存儲和使用問題 為了模擬現(xiàn)實(shí)世界。一維數(shù)組一維數(shù)組的名稱是變量名其保存數(shù)組第一位數(shù)據(jù)i[0]的地址。只有在定義數(shù)組時才能整體賦值其他情況下整體賦值都是錯誤的。二維數(shù)組 定義int a[2][3]; //二行三列a[0][0]、a[0][1]....... 二維數(shù)組將其內(nèi)容輸出通過兩個for循環(huán)。#includestdio.h int main(void) { int a[3][4] { //初始化數(shù)組 {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }; int i,j; /* int a[3][4] {1,2,3,4,5,6,7,8,9,10,11,12}; //初始化數(shù)組 */ //輸出數(shù)組內(nèi)容 for(i0;i3;i) { for(j0;j4;j) printf(%-5d\n,a[i][j]); //5表示每個字符占五個位置-號表示左對齊 printf(\n); } return 0; }多維數(shù)組多維數(shù)組不存在多維數(shù)組因?yàn)閮?nèi)存是線性一維的n維數(shù)組可以當(dāng)作每個元素是n-1維數(shù)組的一維數(shù)組。注把數(shù)組a中的值全部賦給數(shù)組b正確寫法;for(i0;i5;i)b[i] a[i];補(bǔ)充:sizeof(arr)arr雖然數(shù)組名保存的是數(shù)組首元素的地址但上述兩種操作判斷的是整個數(shù)組的大小、取的是整個數(shù)組的地址而不是首元素的大小、首元素的地址對于數(shù)組前對于數(shù)組類型的定義定義的是數(shù)組中每個元素的類型同樣定義了每個元素的大小int (*p)[10] arrp是數(shù)組指針也叫 “指向數(shù)組的指針”p保存的是數(shù)組的地址寫[10]是為了明確指針指向的是有10個元素的數(shù)組由于arr是數(shù)組地址如果寫 int *p arr 會報 類型不匹配函數(shù)指針數(shù)組/* Add,Mul,Sub,Div是四個函數(shù) */int (*pf)(int,int) Add; //pf是函數(shù)指針int (*arr[4])(int,int) {Add,Mul,Sub,Div}; //arr是函數(shù)指針數(shù)組函數(shù)指針數(shù)組的使用ret arr[input](x,y); //對于功能繁多的情況使用case語句繁雜其不易維護(hù)就可以使用函數(shù)指針數(shù)組掉用不同的功能柔性數(shù)組在結(jié)構(gòu)體的最后一個成員時未明確大小的數(shù)組struct S { int n; int arr[]; } int main() { /* 柔性數(shù)組的使用 */ struct S* ps (struct S*)malloc(sizeof(struct S) 40); //結(jié)構(gòu)體的大小只有4字節(jié) ps-n 100; int i 0; for(i 0; i 10; i) { ps-arr[i] i; } for(i 0; i 10; i) { printf(%d,ps-arr[i]); } struct S* ptr (struct S)relloc(ps,sizeof(struct S) 80); if(ptr ! NULL) ( ps ptr; //此時ps與ptr都指向relloc分配的空間地址 ptr NULL; //賦值為空防止誤操作ptr使得ps變成野指針 ) //釋放 free(ps); ps NULL; return 0; }函數(shù)函數(shù)定義void max(int i, int j)}函數(shù)的執(zhí)行體 {void表示函數(shù)沒有返回值max是函數(shù)名稱括號()內(nèi)是形參列表 。int f(void) //void表示函數(shù)f不能接收數(shù)據(jù)int是函數(shù)返回值的類型。 { return 10; //向主調(diào)函數(shù)返回10 } void g(void) //函數(shù)名前面的void表示函數(shù)沒有返回值 { //return 10; //如果寫了返回值就會報錯 }注在使用函數(shù)時會為形參變量分配空間當(dāng)函數(shù)執(zhí)行完后該空間會被釋放在下一次使用該函數(shù)時會為形參變量分配新的存儲空間且分配的不一定是同一個空間。但程序是從main函數(shù)進(jìn)入的也是從main函數(shù)退出的。函數(shù)返回值的類型也稱為函數(shù)的類型因?yàn)槿绻瘮?shù)名前的返回值類型與函數(shù)執(zhí)行體中的return 表達(dá)式中表達(dá)式的類型不同的話則最終函數(shù)返回值的類型以函數(shù)名前的返回值類型為準(zhǔn)。實(shí)參與形參形參是函數(shù)定義時的參數(shù)用于接收實(shí)參的值在函數(shù)內(nèi)部使用。實(shí)參是函數(shù)調(diào)用時傳遞的實(shí)際值用于初始化形參需要確切的數(shù)據(jù)。函數(shù)的形參函數(shù)的形參在函數(shù)執(zhí)行結(jié)束后就被銷毀了return使用格式return 表達(dá)式;作用函數(shù)中的return是用來終止被調(diào)函數(shù)并向主調(diào)函數(shù)返回表達(dá)式的值如果表達(dá)式為空則只終止函數(shù)不向被調(diào)函數(shù)返回任何值。與break是用來終止循環(huán)不同。需要在main函數(shù)中調(diào)用的函數(shù)要寫在main函數(shù)的前面順序執(zhí)行。main函數(shù)下可以調(diào)用其他函數(shù)但其他函數(shù)不能調(diào)用main函數(shù)可在main函數(shù)前添加函數(shù)聲明就能將函數(shù)寫在main函數(shù)的后面。函數(shù)聲明格式void f(void); //函數(shù)聲明是一個語句要加分號函數(shù)的功能設(shè)計要單一才能提高復(fù)用率而不是設(shè)計的十分復(fù)雜。函數(shù)中傳遞一維數(shù)組參數(shù)需要傳遞數(shù)組名稱和元素個數(shù)。但字符數(shù)組不需要傳元素個數(shù)。//數(shù)組傳參 //函數(shù)傳遞數(shù)組求和 #include stdio.h int array_sum(int * data,int n); int main(int argc,char *argv[]) { int a[] {5,9,10,3,10}; int sum 0; sum array_sum(a,sizeof(a)/sizeof(int));//傳遞數(shù)組就必須要傳起始地址a和元素個數(shù)n reyurn 0; } int array_sum(int * data,int n)//int * data a;就是一個指針接收了數(shù)組名 { int ret 0; int i; for(i0;in;i) ret data[i]; return ret; }//字符數(shù)組傳參 //函數(shù)字符數(shù)組傳參不需要傳元素個數(shù)因?yàn)樽址麛?shù)組有\(zhòng)0判斷結(jié)束 includestido.h int main(int argc,char *argv[]) { char s[] h a sdg k; puts(s); del_space(s); puts(s); return 0; } void del_space(char * s1) { char * s2; s2 s1; //一個指針用來處理一個指針用來賦值 while (*s1){ if(*s1 ){ s1; } else{ *s2 *s1; s1; s2; } *s2 \0;//補(bǔ)充\0標(biāo)志字符串結(jié)束 } }指針函數(shù)指針函數(shù)是指一個函數(shù)的返回值為地址量的函數(shù)。結(jié)構(gòu)數(shù)據(jù)類型*函數(shù)名稱(參數(shù)說明){語句序列;}錯誤示例#includestdio.h #includestring.h char * mystring(){ char str[20]; strcpy(str,hello); return str; //返回值是指針 } int main(void) { printf(%s\n,mystring()); //打印函數(shù)返回值 return 0; }由于函數(shù)執(zhí)行完成后對應(yīng)內(nèi)存已經(jīng)釋放所以編譯錯誤。只有當(dāng)返回值為全局變量的地址、static變量地址、字符串常量的地址或使用malloc函數(shù)申請存儲空間。遞歸遞歸函數(shù)指一個函數(shù)體中直接或間接調(diào)用了該函數(shù)本身。//階乘計算 #includestdio.h int fac(int n); int main(int argc,char *argv[]) { int n; printf(input); scanf(%d,n); return 0; } int fac(int n) { if(n 0 || n 1) return 1; return n * fac(n-1);//在函數(shù)中調(diào)用了該函數(shù) }棧一個端口既是出口也是入口。補(bǔ)充對于函數(shù)參數(shù)的設(shè)計函數(shù)參數(shù)的設(shè)計取決于要傳入的是什么就是說形參與實(shí)參的類型要匹配假設(shè)要傳入一個一級指針那就需要將參數(shù)定義為一級指針類型函數(shù)指針指向函數(shù)的指針數(shù)組指針指向數(shù)組的指針指針數(shù)組數(shù)組成員是指針的數(shù)組回調(diào)函數(shù)通過函數(shù)指針在適當(dāng)是調(diào)用他所指向的函數(shù)變量函數(shù)內(nèi)定義的變量是局部變量所有函數(shù)外定義的變量是全局變量。在一個函數(shù)內(nèi)部如果定義的局部變量的名字和全局變量名一樣時局部變量會屏蔽掉全局變量。static變量1. 存儲位置固定靜態(tài)變量存放在程序的數(shù)據(jù)段已初始化的靜態(tài)變量或者 BSS 段未初始化的靜態(tài)變量并非?;蚨选_@使得它的內(nèi)存地址在程序運(yùn)行期間保持不變。2. 延長生命周期靜態(tài)變量的生命周期和程序的運(yùn)行周期一樣長。就算定義它的函數(shù)執(zhí)行完畢其值也不會被銷毀下次調(diào)用該函數(shù)時靜態(tài)變量會使用上次保存的值。3. 僅初始化一次靜態(tài)變量在程序加載時就完成初始化而非每次函數(shù)調(diào)用時都初始化。如果沒有顯式初始化它會被自動初始化為 0對于數(shù)值類型或者 NULL對于指針類型。指針1指針的含義#include stdio.h int main(void) { int *p; int i; p i; /* p保存了i的地址因此p指向i p不是ii也不是p更準(zhǔn)確的說修改p的值不會影響i修改i的值也不會影響p */ return 0; }指針的本質(zhì)是操作受限的非負(fù)整數(shù)不能進(jìn)行加、減、乘、除等操作。p是變量的名字int *表示p變量存放的是int類型變量的地址。也就是說只有整形變量的地址才能存入變量p。p是變量名p變量的數(shù)據(jù)類型是int*類型而*p是int類型也就是指針?biāo)赶虻膬?nèi)容的數(shù)據(jù)類型是整型。*p 就是以p的內(nèi)容為地址的變量*p和取地址是逆運(yùn)算。指針就是地址地址就是指針指針變量是存放地址的變量。如果一個指針變量指向了某個普通變量則*指針變量就完全等同于普通變量。地址就是內(nèi)存單元的編號。p指的是所指變量的地址*p指的是該地址下的內(nèi)容。匯編中的的概念給地址加括號表示該地址的內(nèi)容。例DPTR 1000H,DPTR 1230H 變量p存放的是地址*p存放的是該地址下的數(shù)據(jù)。在 C 語言里聲明指針時不會自動為其分配內(nèi)存地址。要是直接使用未初始化的指針?biāo)闹凳请S機(jī)的這就會讓指針指向內(nèi)存中一個不確定的位置。在其他函數(shù)中定義的二級指針能跨函數(shù)修改變量的值是因?yàn)槎壷羔槾娣诺氖堑刂范皇亲兞績?nèi)容 。/* 數(shù)字交換程序 */ includestdio.h void exchange(int *p,int * q) { int t; //注意t必須定義為int類型 t *p; *p *q; *q t; } int main(void) { int a 3; int b 4; exchange(a,b); //exchang*p*q是錯誤的exchangeab也是錯誤的 printf(a %d, b %d/n,a,b); reeturn 0; }void類型指針未定義指針類型在使用時需要強(qiáng)制類型轉(zhuǎn)換。const修飾指針情況一const 數(shù)據(jù)類型*指針變量名稱[指針運(yùn)算表達(dá)式];常量化指針目標(biāo)是限制通過指針改變其目標(biāo)的數(shù)值但指針變量存儲的地址值可以修改。情況二數(shù)據(jù)類型*const指針變量[指針運(yùn)算表達(dá)式];使得指針變量存儲的地址值不能修改。但是可以通過*指針變量名稱可以修改指針?biāo)赶虻淖兞康臄?shù)值。#includestdio.h int main(int argc,const char argv[]) { int m 10; const int * p; //情況一 int * const q m; //情況二 const int * const r m; p m; //right //(*p); //error //q m; //error *q 20; //right r; //error (*r); //error return 0; }*號的用法乘法、定義指針、指針運(yùn)算符a *p*p是以p的內(nèi)容為地址的變量。通過指針在被調(diào)函數(shù)中修改主調(diào)函數(shù)中的值例 *形參名 ........2指針常見的錯誤# include stdio.h int main(void) { int i 5; int *p; int *q; p i; *q p; //錯誤1類型不匹配 錯誤2沒有對q初始化 *q *p; //錯誤q未初始化 p q; //q是垃圾值q賦給pp也變成了垃圾值 /* 在 C 語言里聲明指針時不會自動為其分配內(nèi)存地址。要是直接使用未初始化的指 針?biāo)闹凳请S機(jī)的這就會讓指針指向內(nèi)存中一個不確定的位置。 本程序無法讀取*q的內(nèi)容得到原因指針q沒有被初始化它指向的是一個隨機(jī)的內(nèi) 存地址直接對其進(jìn)行解引用會導(dǎo)致未定義行為。 */ printf(%d\n,*q); return 0; }3指針和數(shù)組指針和一維數(shù)組一維數(shù)組名是一個指針常量不能做賦值操作存放的是第一個元素的地址。確定一個一維數(shù)組只需要數(shù)組第一個元素的地址和數(shù)組長度。#include stdio.h void f(int * pArr, int len) { pArr[3] 88; //改變的是數(shù)組第四個元素的值 } int main(void) { int a[6] {1,2,3,4,5,6,}; printf(%d\n,a[3]) f(a,6) //將數(shù)組a的首地址傳遞給函數(shù)f確定一個數(shù) //組或?qū)?shù)組進(jìn)行操作只需要數(shù)組的首地址和數(shù)組長度 printf(%d/n,a[3]) return 0; } 輸出結(jié)果 --------------------------------- 4 88 ---------------------------------下標(biāo)和指針的關(guān)系如果p是一個指針變量則 p[i] 永遠(yuǎn)等價于 *p i。*p i的含義取出pi地址中的內(nèi)容。指針變量運(yùn)算指針變量不能相加、相乘、相除。只能相減 如果兩個指針變量指向的是同一塊連續(xù)空間中不同的存儲單元則這兩個指針變量才能相減。 例如一個數(shù)組中不同元素的地址。一個變量的地址使用該變量首字節(jié)的地址表示。無論他指向的變量占幾個字節(jié)每個指針變量只占用四個字節(jié)。因?yàn)闊o論指針變量保存的地址有多大都需要32位地址線來表示(324*8)。對于硬件地址每一個字節(jié)一個編號。例如double類型的變量i占8個字節(jié)那么i保存的是第一個字節(jié)的地址。一個變量的地址使用該變量首字節(jié)的地址表示4動態(tài)內(nèi)存分配靜態(tài)數(shù)組的缺點(diǎn)1.數(shù)組的長度必須提前制定且定義的長度只能是常數(shù)。int a[5]; //okint len 5; int a[len]; //error2.傳統(tǒng)形式定義的數(shù)組該數(shù)組的內(nèi)存程序員無法手動釋放。函數(shù)中定義的數(shù)組只有在函數(shù)運(yùn)行完之后系統(tǒng)分配個數(shù)組的內(nèi)存空間才會被釋放。3.數(shù)組的長度不能在函數(shù)運(yùn)行的過程中動態(tài)的擴(kuò)充或縮小。4.A函數(shù)定義的數(shù)組在A函數(shù)運(yùn)行期間可以被其他函數(shù)使用但A函數(shù)運(yùn)行結(jié)束之后由于數(shù)組A的內(nèi)存已經(jīng)釋放了所有A函數(shù)中的數(shù)組就不能被其他函數(shù)使用了。為什么需要動態(tài)分配內(nèi)存原因就是解決了上面的四個缺陷。//動態(tài)分配函數(shù)malloc的用法1 #include stdio.h #include malloc.h int main(void) { int i 5; //i是靜態(tài)分配的 int * p (int*)malloc(4); //a行需對函數(shù)返回值強(qiáng)制類型轉(zhuǎn)換才能確定有幾個變量由于 //int類型變量占4個字節(jié)所有該行動態(tài)分配了1個變量 /* 1.要使用malloc這個函數(shù)要添加對應(yīng)頭文件 2.malloc函數(shù)只有一個形參并且形參是整數(shù) 3.4表示請求系統(tǒng)為本程序分配4個字節(jié) 4.malloc函數(shù)只能返回第一個字節(jié)的地址 5.a行分配了8個字節(jié)p變量占4個字節(jié)p所指向的內(nèi)存也占4個字節(jié) 6.p本身所占的內(nèi)存是靜態(tài)分配的p所指向的內(nèi)存是動態(tài)分配的 */ free(p);//由程序員手動釋放掉p所指向的動態(tài)內(nèi)存 //而p所占用的內(nèi)存只能在所在函數(shù)運(yùn)行終止時由系統(tǒng)釋放 return 0; }/* malloc函數(shù)用法2:在一個函數(shù)中動態(tài)分配的內(nèi)存在另一個函數(shù)中進(jìn)行處理 */ # include stdio.h # include malloc.h void f(int * q) { *q 200; } int main(void) { int * p (int*)malloc(sizeof(int)); *p 10; printf(%d\n,*p); f(p); printf(%d,*p); return 0; }動態(tài)數(shù)組的構(gòu)造#include stdio.h #include malloc.h int main(void) { int len; int *pArr; int i; //動態(tài)構(gòu)造一維數(shù)組 printf(請輸入你要存放的元素的個數(shù):) scanf%dlen pArr int*malloc4 * len //數(shù)組的每個元素都是int類型。 //也可以寫成pArr[i]的形式使用 //對一維數(shù)組進(jìn)行操作 for(i0;ilen;i) scanf(%d\n,pArr[i]); //對一維數(shù)組進(jìn)行輸出 printf(一維數(shù)組輸出的內(nèi)容時\n) for(i0;ilen;i) printf(%d\n,pArr[i]) free(pArr);//釋放掉動態(tài)分配的數(shù)組 return 0; }靜態(tài)內(nèi)存與動態(tài)內(nèi)存的區(qū)別補(bǔ)充malloc和freevoid* malloc(size_t size);1.如果開辟成功則返回一個指向開辟空間的指針2.如果開辟失敗則返回一個NULL指針因此返回值一定要檢查; if(p NULL){}3.返回值的類型是void*所以malloc函數(shù)并不知道開辟空間的類型具體在使用的時候使用者自己決定強(qiáng)制類型轉(zhuǎn)換4.如果size為0malloc的行為是標(biāo)準(zhǔn)的是未定義的取決于編譯器內(nèi)存開辟int* p malloc(40); //在堆區(qū)開辟40字節(jié)大小的內(nèi)存內(nèi)存釋放free(p);p NULL; //釋放內(nèi)存后p仍然保存了原地址為防止內(nèi)存泄露為p賦值NULLcalloc函數(shù)void* calloc(size_t num, size_t size);1.num是創(chuàng)建元素個數(shù) size每個元素的大小2.相比于malloccalloc會將開辟的每個字節(jié)都初始化為0relloc函數(shù)void* relloc(void* ptr, size_t size);1.ptr是要調(diào)整的內(nèi)存地址size是調(diào)整后的新大小2.返回值為調(diào)整之后的內(nèi)存的起始地址3.調(diào)整之后的內(nèi)存空間可能是在原來內(nèi)存空間的基礎(chǔ)上也可能是開辟了一塊新的空間擴(kuò)充空間的兩種情況1原空間后有足夠大的空間滿足擴(kuò)充條件則由原空間加擴(kuò)充的部分構(gòu)成2原空間后空間不足就會開辟一塊新的空間能夠容納擴(kuò)充后的大小動態(tài)內(nèi)存分配中的常見錯誤1.對于創(chuàng)建的動態(tài)內(nèi)存要檢驗(yàn)其返回值是否為空再對其進(jìn)行解引用操作2.不能對動態(tài)分配的空間越界訪問3.對非動態(tài)開辟的空間使用free釋放4.由于程序?qū)⒍褏^(qū)地址跑丟了使用free釋放一塊動態(tài)開辟內(nèi)存的一部分可以定義中間變量保存動態(tài)內(nèi)存的起始地址在釋放時傳中間變量給free()或者寫成 p[i]*(pi) p是動態(tài)內(nèi)存分配函數(shù)的返回值5.對同一塊動態(tài)內(nèi)存多次free因?yàn)樵诘谝淮蝔ree后函數(shù)的返回值依然記著所釋放內(nèi)存的地址所以要在ferr后對返回值賦值NULL6.動態(tài)開辟的內(nèi)存空間忘記釋放內(nèi)存泄露開辟了空間但是不使用導(dǎo)致該進(jìn)程中該地址空間不能被使用只有進(jìn)程結(jié)束后才會被系統(tǒng)回收相當(dāng)于內(nèi)存泄露了比如1在開辟內(nèi)存命令和釋放內(nèi)存命令之間存在return命令可能出現(xiàn)沒有機(jī)會執(zhí)行free命令的情況2內(nèi)存開辟在一個函數(shù)中進(jìn)行但釋放命令交給了其他函數(shù)忘記寫釋放命令/* 程序崩潰 */ void GetMemory(char* p) { p (char*)malloc(100); //存在內(nèi)存泄露p是形參函數(shù)結(jié)束后就被銷毀了所以p指向的動態(tài)分配空間在該函數(shù)執(zhí)行完成后就找不到了 } void Test(void) { char* str NULL; GetMemory(str); strcpy(str, hello world); //str依然是NULL解引用時崩潰 printf(str); //且該程序沒有free過程也存在問題 } int main() { Test(); return 0; }(5)跨函數(shù)使用內(nèi)存問題靜態(tài)內(nèi)存不能跨函數(shù)使用//靜態(tài)變量不能跨函數(shù)使用 #include stdio.h void f(int ** q) { int i 5; *q i; } int main(void) { int *p; f(p); printf(%d\n,*p);//該行語法沒問題但是邏輯有問題p可以保存i的地址但不能訪問i的空間 //因?yàn)樵趂函數(shù)執(zhí)行完后i的空間就被釋放了不能讀也不能寫 return 0; }動態(tài)內(nèi)存可以跨函數(shù)使用/* 動態(tài)內(nèi)存分配 靜態(tài)內(nèi)存在棧里面分配動態(tài)內(nèi)存在堆里面分配 */ #include stdio.h #include malloc.h void f(int * q) { *q (int *)malloc(sizeof(int)); **q 5; //等價于pint*mallocsizeofint } int main(void) { int * p; f(p); printf(%d\n,*p);//由于在f函數(shù)中沒有手動釋放內(nèi)存命令 //所有該內(nèi)存在執(zhí)行完f函數(shù)后任然存在所有該行語句正確 return 0; }定義的靜態(tài)變量在其內(nèi)存被釋放之后就不能再在其他函數(shù)中被調(diào)用了。不直接寫數(shù)字是為了在不同設(shè)備上定義正確的字節(jié)數(shù)。函數(shù)sizeof返回變量類型的字節(jié)數(shù)。動態(tài)分配是在堆中分配地址。而靜態(tài)分配是在棧中分配地址運(yùn)行結(jié)束后就會出棧就釋放了所有就不能跨函數(shù)調(diào)用。malloc函數(shù)就是通過定義二級指針的方式實(shí)現(xiàn)跨函數(shù)修改變量的目的。二級指針的核心作用是允許函數(shù)修改一級指針的值。如果只是用一級指針指向另一個一級指針類型不匹配而且無法實(shí)現(xiàn)修改實(shí)參指針這樣的功能。…………………………………………………………………………………………第二段代碼里不是“普通變量能在main里賦值”——普通變量 p 、 q 只是“持地址的工具人”真正被跨函數(shù)賦值、修改的是 malloc 申請的堆內(nèi)存它不受函數(shù)生命周期限制只要有有效地址就能操作。普通變量棧區(qū)本身依然不能跨函數(shù)賦值比如 f 里改 q 的值 main 里的 p 不會變。指針指向的內(nèi)存“無效”要么被釋放、要么根本沒分配過此時通過指針操作內(nèi)存讀/寫就是非法的野指針操作。核心答案一句話說透內(nèi)存是否釋放和“哪個函數(shù)分配”無關(guān)只看“內(nèi)存存放在棧區(qū)還是堆區(qū)”——棧區(qū)內(nèi)存隨函數(shù)結(jié)束自動釋放堆區(qū)內(nèi)存必須手動free才釋放。一、先明確兩個關(guān)鍵前提嵌入式開發(fā)必記1. C語言中局部變量的“存放區(qū)域”由 定義方式 決定不是“哪個函數(shù)定義”決定- 普通局部變量比如 int i 5; 默認(rèn)存 棧區(qū)函數(shù)專屬內(nèi)存輕量、自動管理。- malloc 申請的內(nèi)存比如 int *p (int*)malloc(...) 存 堆區(qū)全局共享內(nèi)存重量級、手動管理。2. 函數(shù)調(diào)用的本質(zhì)只是“執(zhí)行代碼邏輯”不會改變內(nèi)存的“區(qū)域?qū)傩浴薄獥^(qū)內(nèi)存不會因?yàn)樵谄渌瘮?shù)中被訪問就變成堆區(qū)堆區(qū)內(nèi)存也不會因?yàn)楹瘮?shù)結(jié)束就自動變成棧區(qū)。二、兩段代碼的內(nèi)存差異拆解對應(yīng)你的疑問我們分別看“f函數(shù)中的i”和“malloc申請的內(nèi)存”的生命周期1. 第一段代碼f函數(shù)里的 int i 5; - i 的定義 f 函數(shù)內(nèi)的 普通局部變量 → 存棧區(qū)。- 內(nèi)存生命周期- 進(jìn)入 f 函數(shù)時系統(tǒng)在棧區(qū)給 i 分配空間存5- 退出 f 函數(shù)時棧區(qū)的核心規(guī)則是“函數(shù)結(jié)束自動回收內(nèi)部所有局部變量的內(nèi)存”——不管 main 函數(shù)的指針 p 是否還存著 i 的地址 i 的棧內(nèi)存已經(jīng)被系統(tǒng)標(biāo)記為“可復(fù)用”后續(xù)訪問就是非法的“野指針操作”。- 關(guān)鍵 i 是棧區(qū)變量所以 f 函數(shù)結(jié)束就釋放和“有沒有被其他函數(shù)的指針指向”無關(guān)。2. 第二段代碼main里 malloc 的內(nèi)存- 內(nèi)存的定義 main 函數(shù)中用 malloc 申請 → 存堆區(qū)。- 內(nèi)存生命周期- malloc 執(zhí)行時系統(tǒng)在堆區(qū)分配一塊 int 大小的空間返回地址給 p - 調(diào)用 f(p) 時只是把“堆區(qū)地址”傳給 f 的 q q 和 p 指向 同一塊堆內(nèi)存—— f 函數(shù)里的 *q 200 本質(zhì)是修改“堆區(qū)內(nèi)存的值”不是修改“內(nèi)存的存放區(qū)域”- 退出 f 函數(shù)時 f 的局部變量 q 棧區(qū)指針會被回收但它指向的 堆內(nèi)存沒動堆區(qū)內(nèi)存的回收只認(rèn) free 不認(rèn)函數(shù)結(jié)束- 回到 main 后 p 依然指向這塊堆內(nèi)存所以能正常訪問修改后的值200直到手動 free(p) 才釋放。- 關(guān)鍵 malloc 的內(nèi)存是堆區(qū)變量所以 f 函數(shù)結(jié)束不會釋放和“在main里分配、f里訪問”無關(guān)。三、一句話總結(jié)核心區(qū)別簡單說棧區(qū)內(nèi)存“跟函數(shù)走”函數(shù)沒了內(nèi)存就沒堆區(qū)內(nèi)存“跟程序員走”你不釋放它就一直在——這也是嵌入式開發(fā)中處理緩沖區(qū)、數(shù)據(jù)結(jié)構(gòu)時優(yōu)先用 malloc 需注意內(nèi)存泄漏的原因?!簿褪钦f無論是在哪里定義的什么類型的變量操作邏輯都是針對內(nèi)存空間來說的只需要看內(nèi)存空間的地址和地址下所存儲的內(nèi)容。變量只是內(nèi)存空間的“別名”或“標(biāo)識”所有對變量的操作本質(zhì)都是通過“變量關(guān)聯(lián)的內(nèi)存地址”去讀寫這塊地址里的內(nèi)容變量是給人看的“標(biāo)識”內(nèi)存地址和內(nèi)容才是給計算機(jī)執(zhí)行的“本質(zhì)”——所有代碼邏輯最終都會落地到“哪個地址、存什么內(nèi)容”的操作上。6函數(shù)指針定義數(shù)據(jù)類型*函數(shù)指針名稱[大小](說明列表)其中大小是指函數(shù)指針數(shù)組元素的個數(shù)#includestdio.h //生成函數(shù) int add(int a,int b) { return ab; } int main(int argc, char *argv[]) { int m 10,n 20; int (*p)(int,int); //函數(shù)聲明 p[0] add; //指針p指向函數(shù)add printf(%d\n,(*p)(m,n)); //函數(shù)調(diào)用 //p[1] sub; return 0; }補(bǔ)充定義指針的類型是指指針?biāo)赶虻膬?nèi)容的類型比如char *p指的是p指向的內(nèi)容是char類型函數(shù)指針指向函數(shù)的指針數(shù)組指針指向數(shù)組的指針指針數(shù)組數(shù)組成員是指針的數(shù)組函數(shù)指針在代碼重復(fù)的部分其中只有一個函數(shù)不一樣就可以采取封裝一個函數(shù)這個函數(shù)的形參是函數(shù)指針類型指向冗余代碼中的不同函數(shù)無具體類型的指針void* pa a;/* void*表示無具體類型的指針可以接受任意類型的地址由于其是無具體類型 的指針?biāo)胁荒芙庖猛ㄟ^指針變量訪問其指向的內(nèi)存地址中存儲的值操作也不能-整數(shù)需要強(qiáng)制類型轉(zhuǎn)換后在操作 */指針的初始化對于未初始化的指針定義該指針可能指向任何位置可能是程序的其他數(shù)據(jù)、代碼區(qū)甚至是受保護(hù)的內(nèi)存此時解引用會導(dǎo)致程序崩潰結(jié)構(gòu)體定義賦值結(jié)構(gòu)體#include stdio.h struct student //這只是定義了一個數(shù)據(jù)類型并沒有定義變量 { int age; float score; char name; } //結(jié)構(gòu)體定義賦值 int main(void) { //方式一 struct student st {15, 84, JIM}; //st是變量名定義的同時賦初值。 struct student st2; st2.age 15; //賦值 st2.score 84; st2.name JIM; //方式二 struct student *pst st; //將普通變量st的地址保存到pst pst-age 15; //賦值 return 0; }pst - age 88.8f; //方式二/指針變量名- 成員名 在計算機(jī)內(nèi)部會被轉(zhuǎn)化成(*pst).age也等價于st.age。88.8默認(rèn)為double類型在末尾加f可轉(zhuǎn)換成float類型且浮點(diǎn)數(shù)不能準(zhǔn)確存儲。通過函數(shù)讀結(jié)構(gòu)體進(jìn)行輸入和輸出int main(void) { struct Student st; //st為struct Student類型變量名用來保存該結(jié)構(gòu)體的數(shù)據(jù) InputStudent(st); //對結(jié)構(gòu)體變量輸入必須發(fā)送st的地址 OutputStudent(st); //對結(jié)構(gòu)體變量輸出可以發(fā)送st的地址也可以發(fā)送st的內(nèi)容 // OutputStudent(st); return 0; } //輸出函數(shù)參數(shù)名為ss void OutputStudent(struct Student ss) { printf(%d %c %s\n , ss.age, ss.sex, ss.name); } //輸入函數(shù)參數(shù)名為pstu void InputStudent(struct Student * pstu) //pstu只占四個字節(jié),*前面的是指針的 //類型用來確定該指針占多少字節(jié) { (*pstu).age 10; //等于st.age strcpy(pstu-name,張三); pstu-sex F; }雖然發(fā)送地址可能會造成內(nèi)容誤改寫但是如果發(fā)送的是內(nèi)容占用的內(nèi)存太大而如果發(fā)送地址占用內(nèi)存少執(zhí)行速度快。所以推薦發(fā)送地址。結(jié)構(gòu)體變量的運(yùn)算:結(jié)構(gòu)體變量不能相加不能相減也不能相乘除只能相互賦值。補(bǔ)充結(jié)構(gòu)體對齊:對齊規(guī)則1.第一個結(jié)構(gòu)體成員在與結(jié)構(gòu)體變量偏移為0的地址處2.其他成員要對齊到該成員數(shù)據(jù)類型大小的整數(shù)倍地址處對齊數(shù) 編譯器默認(rèn)對齊數(shù)與該成員數(shù)據(jù)類型大小相比中的較小值3.結(jié)構(gòu)體的總大小為最大對齊數(shù)的整數(shù)倍4.如果嵌套了結(jié)構(gòu)體嵌套的結(jié)構(gòu)體對齊到自己最大對齊數(shù)的整數(shù)倍外層結(jié)構(gòu)體的大小依然是最大對齊數(shù)的整數(shù)倍含嵌套結(jié)構(gòu)體的對齊數(shù)原因1.方便不同硬件平臺訪問數(shù)據(jù)讀/寫2.提高訪問數(shù)據(jù)的速度用空間換時間對齊只需要訪問一次但是不對齊可能出現(xiàn)一次訪問沒有訪問到全部的數(shù)據(jù)對策讓占用小空間的成員經(jīng)量集中在一塊結(jié)構(gòu)體傳參要傳結(jié)構(gòu)體地址減小在傳值時壓棧的開銷導(dǎo)致的性能下降枚舉把一個事物的所有取值的列舉出來。//這只是定義了一個數(shù)據(jù)類型而不是一個變量,數(shù)據(jù)類型的名字是enum WeekDay enum WeekDay { monday,tuesday,wednesday,........,sunday }; int main(void) { enum WeekDay day wednesday; //day是變量等號后面只能寫類型 //中的元素不能直接寫數(shù)字 printf(%d\n,day); //輸出結(jié)果為2 return 0; } //本函數(shù)的目的只是期望接受0-6之間的數(shù)字將形參定義為枚舉類型 void f(enum weekday i) { switch (i) { case 0:printf(monday\n); break; case 1:printf(tuesday\n); break; case 2:printf(wednesday\n); break; case 3:printf(thursday\n); break; .... } }定義為枚舉類型可以保證傳輸?shù)亩际怯行畔⑹勾a更安全。聯(lián)合體成員共用同一段內(nèi)存空間那么聯(lián)合體的大小至少是最大成員的大小定義union un{char b,int c};//該聯(lián)合體中成員b、c的存儲起始地址是相同的所以也會出現(xiàn)數(shù)據(jù)覆蓋的情況補(bǔ)碼計算機(jī)內(nèi)的數(shù)據(jù)以補(bǔ)碼的形式存儲。二進(jìn)制轉(zhuǎn)十進(jìn)制先確定依據(jù)最高位確定正負(fù)若為負(fù)數(shù)將所有位取反再加1最后添加負(fù)號。十進(jìn)制轉(zhuǎn)二進(jìn)制正數(shù)的補(bǔ)碼:為其二進(jìn)制本身空余的位數(shù)補(bǔ)0。負(fù)數(shù)的補(bǔ)碼:其絕對值 的二進(jìn)制取反加1空余的位數(shù)全部補(bǔ)1。要補(bǔ)夠空余位數(shù)因?yàn)橄到y(tǒng)默認(rèn)補(bǔ)0。例-3的補(bǔ)碼是0xFFFFFFFDint類型變量所存儲的最大正數(shù)用十六進(jìn)制表示0x7FFF_FFFFint類型變量所存儲的絕對值最大負(fù)數(shù)用十六進(jìn)制表示0x8000_0000缺少符號位發(fā)生溢出ch中只保存了1個字節(jié)的數(shù)據(jù) char ch 0x80;//字符型變量占一個字節(jié) ch 129; //129占4個字節(jié) printf(%d\n,ch); //輸出結(jié)果為-127 0000_0000 0 0000_0001 1 ......... ... 0111_1111 127 1000_0000 -128 1000_0001 -127 ......... ... 1111_1111 -1鏈表鏈表的建立用結(jié)構(gòu)體和函數(shù)寫鏈表先構(gòu)造一個頭結(jié)點(diǎn)再依次寫所需的節(jié)點(diǎn)個數(shù)通過malloc函數(shù)構(gòu)造節(jié)點(diǎn)再將所構(gòu)造的節(jié)點(diǎn)插入到頭結(jié)點(diǎn)的后邊返回了頭結(jié)點(diǎn)的地址 。一個節(jié)點(diǎn)包括數(shù)據(jù)域和指針域兩部分。#includestdio.h #includemalloc.h #inncludestdlib.h //定義了一個鏈表節(jié)點(diǎn)的數(shù)據(jù)類型 struct Node { int data;//數(shù)據(jù)域 struct Node * pNext;//指針域遞歸 }; //函數(shù)聲明 struct Node * create_list(void); void traverse_list(struct Node *); int main(void) { struct Node * pHead NULL;//創(chuàng)建了一個struct Node類型的指針用來存放頭節(jié)點(diǎn)的地址 pHead createlist();//CreateList()功能創(chuàng)建一個非循環(huán)單鏈表并將頭節(jié)點(diǎn)地址作為函數(shù)返回值 traverse_list(pHead);//遍歷鏈表元素 return 0; } //非循環(huán)單鏈表函數(shù) struct Node * creat_list(void) { int len;//用來存放有效節(jié)點(diǎn)個數(shù) int i; int val;//用來臨時存放用戶輸入的節(jié)點(diǎn)的值 //分配一個不存放有效數(shù)據(jù)的頭節(jié)點(diǎn) struct Node * pHead (struct Node *)malloc(sizeof(struct Node)); if(NULL pHead) { printf(分配失敗程序終止\n); exit(-1); } struct Node * pTail pHead; pTail-pHead NULL; printf(請輸入您要生成鏈表節(jié)點(diǎn)的個數(shù)len ); scanf(%d,len); for(i0;ilen;i) { printf(請輸入第%d個節(jié)點(diǎn)的值i1); scanf(%d,val); struct Node * pNew (struct Node *)malloc(sizeof(struct Node)); if(pNew NULL) { printf(分配失敗程序終止\n); exit(-1); } pNew-data val; pTail-pNext pNew; pNew-pNext NULL; pTail pNew; } return pHead;//返回值為頭節(jié)點(diǎn)的地址 //遍歷函數(shù) void traverse_list(struct Node * pHead) { struct Node * p pHead-pNext; while(NULL ! p) //鏈表不為空則執(zhí)行循環(huán) { printf(d\n,p-data); p p-pNext; } return; } }首節(jié)點(diǎn)存放第一個有效數(shù)據(jù)的節(jié)點(diǎn)。尾節(jié)點(diǎn)存放最后一個有效數(shù)據(jù)的節(jié)點(diǎn)。頭結(jié)點(diǎn)頭結(jié)點(diǎn)和首節(jié)點(diǎn)的數(shù)據(jù)類型一模一樣頭結(jié)點(diǎn)是首節(jié)點(diǎn)前面那個節(jié)點(diǎn)頭結(jié)點(diǎn)并不存放有效數(shù)據(jù)。設(shè)置頭結(jié)點(diǎn)的目的是為了方便對鏈表進(jìn)行操作。頭指針存放頭結(jié)點(diǎn)地址的指針變量。確定一個鏈表只需要一個參數(shù)頭指針。算法通俗定義解題的方法和步驟。狹義定義對存儲數(shù)據(jù)的操作。對不同存儲結(jié)構(gòu)要完成一個功能所執(zhí)行的操作是不一樣的。例如輸出數(shù)組中所有的元素的操作與輸出鏈表中所有元素的操作肯定是不一樣的。這說明算法是依附于存儲結(jié)構(gòu)的不同的存儲結(jié)構(gòu)所執(zhí)行的算法是不一樣的。廣義定義也叫泛型。無論數(shù)據(jù)是如何存儲的對該數(shù)據(jù)的操作都是一樣的。數(shù)組優(yōu)點(diǎn)存取速度快缺點(diǎn)需要一個連續(xù)的很大的內(nèi)存空間插入和刪除元素的效率很低。鏈表查找某個元素的效率低而鏈表不需要連續(xù)的空間來存儲數(shù)據(jù)每一個元素的空間存儲數(shù)據(jù)和下一個元素的地址??恐羔樥业较乱粋€元素。NULL的含義1.數(shù)值0。2.字符串結(jié)束標(biāo)記符。3.空指針NULL,表示的是編號位零的地址。 至于其到底是什么含義取決于解碼方式。計算機(jī)規(guī)定了以零為編號的存儲單元內(nèi)容不可讀也不可寫。free (p);p NULL;*p 某值;對于被釋放的變量p要沒有給p寫入NULL就可能出現(xiàn)任然可以對*p賦值的現(xiàn)象。但如果寫如NULL計算機(jī)不允許對編號為零的存儲單元進(jìn)行讀寫操作就避免了前面問題的發(fā)生。宏定義含參宏定義#define ADD(a,b) ((a)(b)) int result ADD(3,4);1.括號的使用要給每個參數(shù)和整個表達(dá)式都加上括號以此避免宏展開后出現(xiàn)運(yùn)算優(yōu)先級方面的問題。2.參數(shù)為表達(dá)式時可能出現(xiàn)副作用當(dāng)參數(shù)是帶有副作用的表達(dá)式像自增、自減運(yùn)算時宏展開后可能會產(chǎn)生多次求值的情況。#define MAX(a,b) ((a) (b) ? (a) : (b)) int x 5; int y MAX(x,10)// 宏展開后是 ((x) (10) ? (x) : (10))x 會被遞增兩次3.字符串化操作符#借助#操作符可以把參數(shù)轉(zhuǎn)換為字符串字面量。#define PRINT(x) printf(#x %d,x) PRINT(10); // 會被展開成 printf(10 %d\n, 10); 也就是 printf(10 %d\n, 10);4.標(biāo)記粘貼操作符##使用##操作符能夠把兩個參數(shù)連接成一個標(biāo)識符。#define CONCAT(a, b) a##b int xy 10; int result CONCAT(x, y); // 會被展開成 int result xy;補(bǔ)充assert的作用assert斷言是編程中用于調(diào)試階段驗(yàn)證關(guān)鍵條件 / 假設(shè)的工具核心作用是「自我檢查」—— 確保程序運(yùn)行到某一位置時預(yù)期的條件必須成立若不成立程序會主動觸發(fā)錯誤斷言失敗幫助開發(fā)者快速定位問題而非等到錯誤擴(kuò)散后才暴露。const的作用語義是只讀基礎(chǔ)類型的值直接存在內(nèi)存棧中const 會鎖定這個值的內(nèi)存地址無法通過變量重新賦值修改會直接報錯
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久久久思思热| 久久久99精品免费观看| 午夜丁香丁香婷婷| 在线看av| 狠狠干最新地址| 99综合视频| 色综合久| 综合色图区| 色婷婷五月天av在线| 亚洲天堂大香蕉| 婷婷五月激情片| 久久久久网站| 玖玖午夜视频| 婷婷综合偷拍| 大香蕉网 久久| 26UUU精品一区二区| 五月婷导航| 欧美噜噜噜草| 99热九九这里只有精品| 九月影院義母在线播放| 日韩人妻在线观看| 97色在线观看视频| 99热99| 99色在线观看| 久热无码| 久久免费精彩视频| 极品少妇高潮啪啪AV无码| 泰州成人视频| 天天摸天天舔| www,色婷婷| 成人色色视频| 色婷婷视频综合| 久久国产精品乱子伦_靑青草…| 77777亚洲午夜久久| 亚洲乱码日产精品BD| 香蕉综合在线| 九九热精品在线| 亚洲丁香婷婷丁香五月天激情| 丁香婷婷五月天色播| 丁香六月啪啪啪| 字母不卡码人逼| 日韩成人无码| 婷婷色色网站| 国产综合A片| 午夜69成人做爰视频| 九九色色网| 丁香五月电影| 婷婷久久亚洲| 99re这里只有| 亚洲V国产V欧美V久久久久久| 六月丁香久久| 婷婷综合网站| 琪琪色综合网站| 久久久亚洲精品一区二区三区浴池| 久久性爱视频网站| 亚洲成人AV电影在线| 韩国真做片在线观看| 日韩成人av在线| 五月天色色婷婷| 六月婷婷色综合| 天天操天天操天天操天天操天天操| 少妇人妻综合色6699| 婷婷综合在线观看视频| 99爱精品| 久热伊人| 996热re视频在线观看视频| 亚洲最大视频网站| 超碰大香蕉网| 天天橾日日橾夜夜橾17| 色噜噜狠噜噜视频| 色5月婷婷| BBWCUCKOLD精品熟妇| 五月综合久久| 5五月综合网亚洲| 久久99精品久久久久久噜噜| 久热这里这里有精品| 精品人妻久久久| 五月天狠狠干| 97AV在线视频| 日本在线观看99| 五月丁香在线观看国产| 国产欧美日韩性爱| 五月人妻婷婷视频| 亚州美女| 97人人操| 少妇人妻凹凸视频| 日韩AV大全| 99久久99九九99九九九| 久久99精品久久久久久三级| 色插综合网| 99热这里只有精品搜| 夜夜爱伊人| 天天爱天天操| 精品99视频| 99热福利| WWW免费视频碰碰碰碰| 久久五月天婷婷| 丁香五月激情婷婷| 五月丁香婷婷综合视频| 丁香婷在线| 日本狠狠色| 99免费在线视频| 色欲AVV| 婷婷丁香成人五月天| 99热爱爱干干日| 久久精品国产精品| sS丁香五月婷婷| 亚洲99热| 20253AV| 丁香五月成人| 五月丁香婷婷久久| 人人性久久| 6080av| www.婷婷六月天| 久热婷婷综合| 婷婷区日本| 婷婷激情在线| 久久婷婷五月天蜜桃| 日批在线看| 综合久| 亚洲在线网站| 狠狠色噜噜色狠狠狠综合久久成人波| 五月天色婷婷伊人网| 色噜噜狠狠色综合日日| 九九婷婷综合| 欧美色色色色色| 夜夜AVV| 亚洲另类婷婷五月丁香在线播放| 99色在线视频| 色婷婷影院| 99亚洲视频| 日韩少妇内射免费播放| 99热精品一区| 欧美十二区| 六月丁香视频网站| 99亚洲精品| 狠狠操狠狠爱| 99热这里只有精| 婷婷欧美综合| 香蕉综合在线| 在线观看免费视频| 激情婷婷五月天伊人在线观看| 丁香五月欧美午夜视频| 五月天三级久久| 色综合天天天天做夜夜| 五月婷中文娱乐综合| 婷婷五月天亚洲精品| 99自拍视频在线| 色九月婷婷综合| 亚洲激情另类| 五月婷婷激情综合| 狠狠狠狠狠狠| 丁香花五月天| 成片免费观看大全| 五月天激情小说网| eeuss人妻| 色综合色色| 激情综合网丁香| 亚洲AV网站| www.色综合| 97碰碰人人| 九九精品热| 99精品在线观看视频| 亚洲综合九九| 免费观看全黄做爰的视频| 日韩狠狠色婷婷| 日本一级淫| 久久这里有精品在线观看| 久艹大香蕉| 精品网站:999WWW| 婷婷激情人妻| 九色视频这里只有精品| 婷婷丁香五月激情密臀av| 五月婷婷在线免费| 色欲婷婷夜夜| 丁香五月婷婷激情蜜桃| 99色综合| 色色色色色色综合| 4399在线日本A片| AV人人操| 五月色综合网| 五月婷婷偷| 成人AV在线中文版| 成人欧美日韩| 99热精地址| 国产精品汇聚精彩第二页 - 高清完整版在线 - 青蛙AV | 少妇性按摩无码中文A片| 五月在在观看| 久热婷婷在线视频| 久久婷婷亚洲| 99热思思| 丁香五月天成人| 丁香五月婷婷激情完整版| 综合激情在线视频| 亚洲综合狠狠艹| 伊人久久大香天蕉亚洲特级| 色五月婷婷网| 九九热精品99| 丁香5月婷婷| 色婷婷五月成人网| 性爱网五月婷婷| www.丁香黄色五月天人与| 操操操操操操婷婷五月天| 欧美经典片免费观看大全| 性生活久久人妻| 日本免费91| 色情五月综合婷婷| 99成人| 欧日美女Va| 综合www色| 婷婷丁香久久| 日本色图综合| 玖玖在线| 久久久全国免费视频| 久热亚洲| 色香欲综合| 99热 免费| 亭亭玉月丁香| 久久精品99久久久久久久久| 亚洲AV日韩在线观看| 91蜜桃婷婷狠狠久久综合9色| 亚洲综合狠狠艹| 99热18| 一区二区三区四区牛| 久综合网| 超碰在线看| 久久久久人妻| 99操免费视频| 久久人人妻| 伊人婷婷五月| 丁香五月天婷婷中文| 中美日韩成人在线| 情色五月天网站| 第1影院之五月婷婷| 日本人妻伦在线中文字幕| 丁香五月激情啪| 五月丁香在线看| 思思99精品视频在线观看| 夜色综合网| 色爱爱综合网| 久热一本| 9色在线| 欧美婷婷综合| 激情六月婷婷| 色色免费网站| 大香蕉久操| 久久99久久99精品免观看粉嫩| 亚洲va在线∨a天堂va欧美va| 玖操97| 欧美在线骚货| 丁香婷婷五月天色播| 成人日韩欧美| 久久99最新| 久久激情视频| 丁香五月综合福利视频导航| 天天狠狠色| 午夜爱爱爱成人| 秋霞三级影视资源| 深爱激情网噜噜色| 五月天婷婷激情小说电影| 99热这里只有精品最新| 大香蕉欧美在线| 婷婷色片| 五月丁香六月激情在线| 午夜天堂一区人妻| 强奸幻女毛片| 97超碰人人操| 国产高潮白浆一区二区| 五月丁香视频色色| 夜夜 操无码| 激情五婷网| 欧洲毛片基地c区| 91超碰九色| 国产人妻操逼| 开心五月天激情| 色丁香六月| 无码任你操| 六月激情网| 色婷婷亚洲| 久久久久久人妻| 色五月网址| 夜精品无码A片一区二区蜜桃| 做爰丰满少妇1313| 婷色成人| 天天天天天日| 91男同视频| 久久婷婷综合五月| 五月天停婷基地| 亚洲啪啪网| 国产亚洲在线观看| 久久综合激情婷婷激情| 色婷婷丁香五月天在线视频 | 五月丁香另类图片| 久久婷婷伊人| 91大神在线免费看视频全集男男一起操| 1024你懂的欧美曰韩| 99在线热| 开心五月深爱五月丁香五月激情五月| 变态另类9| 丁香五月成人| 九九大香蕉黄色影院| 色五月天丁香| 激情六月日韩| 国产精品色| 97成人丁香| 日本激情91| 亚洲AV激情五月综合网| 欧美 日韩 成人 在线| 五月天色婷婷综合| 亚洲午夜一区二区| 丁香五月婷婷成人网| 丁香五月天婷婷激情| 99热在这里只有精品| 欧美成人精品老美女噜噜噜| 99久久婷婷国产综合精品草原| 激情丁香五月婷婷| 91色五月| 色香久久| 另类图片五月激情| 天天干天天干天天干天天干天天干天天 | 激情激情激情网| 91凹凸在线| ..真实国产乱子伦毛片| 五月五婷婷网| 日本高清久| 国产婷婷婷| 色热久| 日逼免费视频| 五月丁香影视| 国产亚洲99| 激情五月婷黄版| 涩丁香| 毛片网站谁有| 天天爽天天| 天堂久久性| 九九热婷婷| 99亚洲欧洲| 婷婷伊人五月天| 久久人操-久草婷婷-成人AV| 另类五月激情| 亚洲永远av在线播放| 婷婷五月丁香高清无码| 九九久久精品| site:hcxsz888.com| 九九在线精品| 色色色色色综合| 五月婷深深爱激情网| 六月激情网| 久9无码视频| 5月婷婷五月天| 日产精品久久久久久久蜜臀| 色五月无码| 婷婷成人综合| 久久九色| 色情五月综合婷婷| 亚洲中文无码成人| 五月丁香激情婷婷| 九月婷婷综合在线| 婷婷综合成人| 色婷婷久久综| 久99| 99热免费网站| 国产做爰视频免费播放| 色 五月婷婷基地| 女人高潮内射99精品| 99在线er热| 91五月天| 狠狠999| 欧美日韩成人| 色五月成人在线| 九九婷婷五月天| 五月丁香激情深爱婷婷| 男人視頻站| 色婷婷的五月天| 色婷婷色综合激情91| 婷婷久久精品| .操區COm| 色99欧洲色19| 99热偷拍| 婷婷五月丁香综合桃花色网| 激情AV| 欧美在线视频99| 操一区| 五月丁香啪啪啪啪| 日本黄色精品| 五月天丁香网| 丁香五月色欲| 色噜噜婷婷| 深爱五月天| 青青草视频福利| 九九色中文| 99在线公开视频| 思思热在线观看| 婷婷玉月丁香五月在线视频| 99精品超在线播放| 99国产精品久久久久久久久久久| 情婷婷五月天| 综合激情伊人影视在线| 五月丁香色色色| AV性爱网| 狠狠五月天婷婷| 97干视频在线| 五月激情视频网| 亚洲天堂AV综合网| 99免费| 丁香五月丁香伊人| 丁香婷婷五月激情| 婷婷综合婷婷| www.夜夜操.com| 天天操天天草天天草天天| 五月天丁香婷| 久久这里只有精品视频15| 深爱激情五月天| 草操网| 五月天色欧美| 中国女人做爰A片| 狠狠综合网| 玖玖国产视频一区| 九九99热| 久久码久久无清| 噼里啪啦在线观看免费完整版视频 | 婷婷久久午夜网| 久久99久久久久久久噜噜| 亚洲看av的网站| 婷婷五月色惰| 日韩三级高清无码| 香蕉人妻AV久久久久天天| 热99在线精品| 五月天亚洲色| 天天干天天爽天天操| 色色是色N一| 99人妻碰碰碰久久久久视| 大地资源色婷婷视频在线| 棕合影院色色| 人妻啪啪啪| 婷婷五月免费在线| 六月丁香射婷婷欧美色图片| 亚洲中文丁香| 91Chinese在线| www.久久爱.c n| avh片在线观看| 白人荫道BBWBBB大荫道| 久久激情视频| 久碰视频| 超碰v| 婷婷六月丁| 九九99在线观看视频| 九九九午夜视频| 91久久日日| 天天插天天干| 夜夜穞天天穞狠狠穞AV美女按摩| 97色婷| 五月天色丁香| 婷婷香五月天| 亚洲综合婷婷| 搡BBBB搡BBB搡18| 夜夜干 夜夜操| 超碰成人电影| 五月天综合婷婷| 欧美日综合| 人妻精品在线| 思思热在线视频精品| 婷婷香蕉| 婷婷色网| www.99精品日操伊人乱碰在线| 96精品成人无码A片观看金桔 | 婷婷亚洲综合| 99色亚洲| 丁香六月亚洲综合| 六月色色婷婷| 99综合99| 五月色色激情网| 五月婷婷六月丁香| 五月婷婷五月天| 超碰人人在线| 一起草av| 国产成人综合电影| 亚洲激情六月丁香| 97在线/日本| 在线免费观看激情视频| 婷婷色五月大香蕉在线观看| 久久五月婷婷丁香| 婷婷久久久| 超碰99热精品在线| 99久久精品亚洲综合| 九九精品少妇| 色玖玖综合| 六月丁香大香蕉| 人妻熟妇国产精品| 亚州激情在线视频| 激情VA视频| 狠狠插狠狠插| 亚州色婷婷| 99久久婷婷国产综合精品草原| AA丁香综合激情| 国产全是老熟女太爽了| www.色色com| 超碰人人99| 日良久久| www.26uuu.com亚洲电影| 可以免费看的av网站| 亚洲激情综合免费| 五月婷婷综合网| 婷婷丁香六月天| 少妇人妻人伦A片| 激情五月影院| 伊人久热91网| 成人在线网址| 丁香婷婷少妇| 9热精品| 香蕉久久国产AV一区二区| 色吧五月婷婷| 操操日韩| 五月香蕉综合| 野战毛片三一3| 九九精品热| 天天日P天天射P| 亚欧州精品视频| 日本va欧美va精品发布视频| 天天插天天插天天插天天插| 久久这里有精品| 中文字幕成人日韩| 六月婷婷深深爱| 思思久日精品视频| 国产亚洲精品久久久久久牛牛| 久久九九热38| 婷婷激情中文综合| www.9797国产| 久久婷婷免费| 超碰狠狠操| 五月综合婷婷五月| 国产毛片欧美毛片久久久| 一起草aV| 天天爽天天摸| 99激情| 五月丁香久久丝袜啪啪| 久久99热精品a片在线观看| 97性视频| 99精品偷自拍| 天天爽—爽| 九九热这里| 五月天丁香久久综合 | 精品亚洲国产成AV人片传媒| 人妻久久婷婷| 九九亚洲视频| 欧美久久一级内射wwwwww.| 色欲av伊人久久大香线蕉影院| 日韩综合大黄| 五月天偷拍| 婷婷五月丁香基地在线视频官网| 丁香五月天社区| 无码一区精品一区视频| 丁香五月婷婷成人色区| www激情| 99啪啪网| 久久久久亚洲AV无码网影音先锋| 色吧99| 综合激情五月丁香| 久热99| 任我鲁这里有精品视频| 婷婷五月激情五月激情| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 六月婷婷综合| 色婷婷伊人| 亚洲99在线| 久久久香港| wwwwww.色| 婷婷亚洲在线| 五月丁香六月婷婷手机无线| 丁香五月91| 午夜日日| 色私五月婷婷| 婷婷五月天av| 亚洲热视频| 91久久综合亚洲鲁鲁五月天| 淫视馆aV二区一区| 丁香五月天堂网| 婷婷丁香激情综合色情| 热99国产精品| 日韩婷婷| 九九热再线九九视频免费在线观看| 五月天com| 99re热精品在线视频| 99亚洲视频| 色色九九五月天 | 婷婷四月 成人 狠狠干| 中文字幕日产A片在线看| 亚洲丁香婷婷五月天综合色| .精品久久久麻豆国产精品| 色噜噜伊人| 超碰狠狠操| 六月婷婷国产| 99伊人婷婷在线| 五月天伊人综合| 欧美婷婷日本| 99热精品在线观看| 啪啪小说五月天| 视频1区2区| 99精品久久久| 狠狠狠激情网| 丁香六月成人网| 99视频网址| 99 热| 午夜成人片400| 久久这里都是精品免费| 久久人人添人人爽添人人片αV| 色五月丁香五月婷婷五月成人网| 婷婷激情综合色五月久久91| 一级精品999WWW| 掩去也综合五月视频| ..真实国产乱子伦对白在线_欧| xxx综合在线| 成人视频免费观看高清完整版在线观看| 天堂综合久久 | 亚洲国产成人在线| 五月天色婷婷图片| 国产免费av在线| 五月婷婷五月天| 色区域网站视频| 欧美在线视频免费播放| 9精品久久999| 亚洲激情综合| a v色婷婷| 国产五月天婷婷| 六月婷婷五月丁香| 精品乱码久久久久| 激情亚洲五月| 婷婷五月丁香五月| 天天色视频| 99久热| av网站免费在线| 五月天婷婷色综合| 丁香五月婷中字幕| 久草久青福利| 欧美人人女女精品综合五月天| 岛国av网站| 五月丁香亭亭| 天天摸天天高潮天天爽| 丁香五月影院| 99热网址| 色综合中文综合网| 嫩BBB搡BBBB榛BBBB| 九九精品亚洲| 天天综合影院| 国产精品-第3页-91JQ就要激情网91JQ5.JQJQ926.XYZ | 丁香六月色婷婷| AV片在线观看| 国产精产国品一二三在观看 | 色玖玖| 韩国97天堂| www.五月天| 五月婷婷丁香| 五月婷婷六月天| 色综合久久88色综合天天| 激情五月,色五月| 99热全是精品| 亚洲AV永久无码影院黑人| 五月婷婷色| 色999;丁香五月| 99热99精品| 九九在线这里只有精品视频| 嫩BBB槡BBBB搡BBBB视频| 香蕉久久国产AV一区二区| 五月婷婷丁香网| 色yeye色综合| 色五月播五月| 伊人综合网4| 99久久这里只有精品免费官网| 日韩久热| 色99视频| 欧洲不卡视频| 婷婷丁香九月| 国产成人综合网| 综合久久高清| 日韩中文欧美| 激情五月天婷婷图| 五月色情婷婷| 电影蜘蛛女| 天天操夜夜夜夜爽| 呦呦v线| 日韩抽插操逼| 丁香伊人激情| 99免费热视频| 色五月在线观看| 五月综合激情| 亚洲五月婷| 五月婷婷色色| 大地9中文在线观看免费高清| 欧美精品999| 亚洲V国产V欧美V久久久久久| 成人无码髙潮喷水A片| 色五月av| 99婷婷综合| 亚洲 成人 电影av在线观看| 蜜桃婷婷狠狠久久| 搡BBBB搡BBB搡18| 日本精品久久久久中文字幕| 久久91久久精品久久| 99热10在线高清播放| 日韩成人影片在线观看| 久久大香免费| 九九狠狠干| 五月丁香激情五月天| 9999热精品在线免费播放| 五月丁香无码| 丁香婷婷色九月| 日日干天天爽| 久久五月热| 久9精品| 操操操操操操婷婷五月天| 激情美女五月天| 五月色无码| 99思思热只有在这里看| 99色| 国产偷人爽久久久久久老妇APP| 桃色五月婷婷| 日本黄色在线观看| 婷婷五月天中文字幕.| 日日操夜夜爽天天天| 婷婷丁香18| 五月丁香婷婷基地| 婷婷婷五月香蕉| 丁香婷婷五月激情| 噜噜噜噜在线| 久久综合九九| 丁香深五月婷婷| 120分钟婬片免费看| 丁香五月天五码婷婷| 五月婷婷综合久久| 五月深爱激情网| 婷婷五月综合社区| 五月天婷婷网站| 99热精品在线| 色五月激情网| 婷婷久久图片| Av九九| 干亚洲天堂| 天天做天天爱天天高潮| 五月婷丁香| 婷婷日本在线| 激情小说婷婷小说| 丁香五月AV| 8050一级网| 丁香五月天啪啪| 婷婷亚洲综合| 婷婷六月天国产综合| 六月婷婷香蕉| 丁香六月婷婷综合在线| 久久99精品视频| 91精品婷婷国产综合| 色婷婷AV五月天| 丁香婷婷色五月| 久久久五月婷婷| 99热这里只有精品50| 91狠狠色丁香婷婷综合久久精品| 久草 tingting| 九九视频热| 深爱激情综合| 久久婷婷亚洲| 人人操人人干AV| 98热精品| 99性爱精品| 国产99久久久国产精品免费看| 日韩成人免费电影| 狠狠色97| 色99色| 五月天伊人网| 婷婷五月色| 九九超日本| 婷婷五月天激情丁香| 久久一级AV| 熟女乱论网| 激情婷婷| 伊人大香五月天| 9999久久久久| 五月天另类小说亚洲| 尔尔AV一区| 99无码超碰| 丁香五月区| 在线视频你懂得| 色婷婷88| 色婷婷影院| 综合激情五月天| 婷婷九月| 天天操天天插| 狠狠肏综合网| 免费观看全黄做爰的视频| 五月天婷婷丁香蜜桃91| 99在线精品免费视频| 天天日夜夜高潮| 大伊香蕉精品视频在线| 婷婷六月网| 97超级啪啪在线观看| 五月天激情网页| 91九色成人原创视频| www激情婷婷com| 4399精品一区二区| 99成人在线观看| av无码电影| 五月激情小说网| 久久五月婷婷电影| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 色综合综合色| 色优久久| 色五月开心开心五月激情五月| 天海翼中文字幕高| 天天综合网网欲色| 久久性刺激| 99热精品在线| 婷婷五月色网| 日韩无码人妻一区二区| 婷婷五月天国产| 色播综合| 玩熟女五十AV一二三区| 久久九九免费视频| 亚洲AV综合在线观看| 天天插综合| 婷婷激情区| 91九色大屁股| 激情综合五月天| 欧美日韩AAAA| 99热这里只有精品1025| 变态 另类 在线 | 四月婷婷五月丁香| 婷婷五月天久久久| 99re鈥哸鈥唙| 超碰人人色| 五月激情婷婷偷拍| 亚洲不卡| 亚洲小视频| 女同激情久久av久久| 影音先锋高清无码资源网| 日日操日日撸| 嫩草综合网| 色五月婷婷影视| 久久激情视频| 99热在线只有精品| 五月天婷婷自拍图片在线观看| 九色综合网| 天天狠狠干| 五月天婷婷色色| 1024国产在线| 99久在线精品99re8热| 国产日日操夜夜操的肉棒视频| 五月天婷婷免费| 国产欧美熟妇另类久久久| 91久久精品无码一区二区三区| 伊人五月婷婷| 色婷婷9| A片试看50分钟做受视频| 色色丁香婷婷综合| 在线A色| 丁香九月综合| 天堂色色色| 91男人资源站| 色婷婷六月| 婷婷四色五月| 99国产小视频免费观看| 九九九九九九综合| 五月做爱| 99热在线观看| 网站免费一站二站| 婷婷五月天成人| 丁香五月激情婷婷| 噜噜噜噜婷婷五月天| 玖玖激情网| 狠狠干.com| 色婷婷小说| www.久久爱| 久久久精品AV| 五月天综合视频| 97五月天婷婷| 六月婷婷日| mmm1717.6dbm人人爱人人操| 五月天天堂久久| 日本专区久久| 99综合99| 99在线免费视频播放| 国产毛片精品一区二区色欲黄A片| 婷婷六月综合激情| 五月伊人网| 99热在线精品播放| 开心五月天激情网| 婷婷五月天国产在线播放| 人人操人人爱丁香五月| 五月婷久久在线| 婷婷六月丁香色| 涩涩涩婷婷| 久久五月六月| 插插插色综合网| 国产永久一二一起草| 五月天婷婷一起草| 99热思思久| 九九热这里有精品23| 亚洲视99| 色婷五月丁香久亚洲| 婷婷六月色丁香视频在线观看| 色日本丁香婷婷| 琪琪理论片| 免费久久这里只有精品99| 亚洲五月婷婷在线| 去干网最新版本亚洲版| 丁香六月爱综合| 另类激情五月天| 六月丁AV| 97热在线精品| 97丁香婷婷| 丁香五月天社区| 久久99网站| 色一色综合| 色吧网综合| 丁香五月先锋| 91色五月| 五月婷婷视频啪啪美女| 五月丁香六月婷婷色| 天天做天天爱天天玩夜夜爽| 日本激情综合| www99精品| 色综合五月| 香蕉网婷婷| 丁香五月婷婷久久久| 色色五月天网站| 色色五月婷婷| 99视频精品全部免费观看| 婷婷五月天激情偷拍| 婷婷五月天激情五月天深爱五月天| 亚洲色情激情丁香五月| 九九热思思| 久久婷婷六月综合| 99久久99久久综合| 青草五月天| 狠狠色噜噜狠| 97人人看| 国产五月天激情小说| 丁香六月婷婷综合欧美| 欧洲亚洲免费视频9| 曰韩少妇内射免费播放| 墨西哥毛片内射精| 激情五月天婷婷| 99视频精品8| 97人人搞| 被强行糟蹋的女人A片| xxxx五月天色色| 亚洲操逼网| 久久色五月天激情小说| 九热精品| 在线超碰免费| 久激情网| 夜丁香五月婷婷| 亚洲综合视频在线| 五月天色软件| 中文字幕,综合,91| 欧美色播综合在线观看| 五月丁香激情综合啪啪| 99色综合| 色色五月天网站| 丁香久久五月天视频在线观看| 日本美女上人| 97亚洲视频在线| 色情五月综合婷婷| 婷婷亚洲五月色综合| 一级性爱视频| 日韩欧美成人网| 天天操夜夜啊| 婷婷五月六月丁香| 九九无码AV| 啪啪色区| 26uuu国产激情视频| 香蕉久久国产AV一区二区| 9色免费网| 五月丁香久久激情网| 生活片五区| 日本久久9| 五月天无码视屏播放| www激情| 五月天激情日色在线| 色婷婷激情小说网| 久久网日本| 亚洲精品中文字幕成人片| Jh7Uf088VHafNm| 人妻操逼视频| 99狠狠色| 丁香五月电影| 激情涩播| 五月久久噜噜| 丁香五月天婷婷激情| 在线视频激情网站| 五月丁香六月激情啪| 五月色网| 国产精典视频在线观看| 九月综合| 毛v一区二区视频| www,99热| 91人妻人人操| 天天舔天天摸天天透| www.久久| 丁香五月婷婷久久久| 亚洲成人五月| 五月花激情网| 99色网站| 久久久久五月丁香| 天天噜噜| 日本欧美999久久久三级片| 激情五月丁香综合网站| 99热热热99精品婷婷| 色情播放| 噼里啪啦在线观看免费完整版视频 | 无码字幕中文| 开心五月综合激情综合五月| 国产偷人爽久久久久久老妇APP| 97人人干人人操| 99久久6| 99热婷婷| 99无码视频| 婷婷六月色丁香视频在线观看| 深爱综合网| 色五月婷婷少妇人妻| 久9热| 五月婷综合性中心| 成人做爰黄A片免费看直播室男男| 秋霞网在线观看理论91| 丁香婷婷九月在线| 久99热| 婷婷五月色花丁香社区| 丁香五月婷婷色播艳门照| se婷97| 五月天婷婷在线视频| 综合色影| 五月天另类激情在线| 天天日夜夜高潮| 久久性爱网| 国产精品A片| 日本97久久久精品| 影音先锋91| 亚洲一个色| 大香蕉色婷婷伊人在线| 婷婷丁香五月综合激情小说| 日本专区久久| 日本久热| 亚洲开心激情网| 六月丁丁香| 另类小说激情五月天| 亚洲欧洲国产精品| 天天日天天色| 日日爽天天| 激情五月天色婷婷综合| 99精品视频免费观看| 久久成人天| 丁香花成人区| 亚洲色色色| 思思热再线视频| 久久婷综合网| 99爱在线免费视频| 操一操| 99操碰| 日韩精品AV一区二区三区| 久播影院免费观看电视剧大全最新网| 激情久久网 | 夜夜夜夜做天天天做无码视频| 美女被操一区二区| 久久婷.com| 成 久久| 99久久精彩视频| 综合色播| 日本操B视频| 色婷婷中文字母五月丁香| 色五月婷婷网| 久久视频婷婷| 影音先锋 婷婷| 在线观看av网站| 婷婷色五月综合| 婷婷综合在线观看视频| 激情黄色小说色五月| 天堂呦 呦百度搜索-百度搜索| 欧美丁香五月夫妻天| 久热这里只有精品在线观看| 国产毛片精品一区二区色欲黄A片| 亚洲视频色婷婷| 五月丁香 久久久| 殴美日韩成人| 婷婷色色亚洲| 丁香五月开心亚洲| 我要射综合| 六月丁香视频网站| 色婷婷性爱| 精品成人在线| 激情五月丁香婷婷夜夜操| 99热在线观看成人| 五月天激情图片| 看久久性爱99视频| www.久久五月天.com| 伊人激情啪啪| wwww.色婷婷| 亚洲精品久久久久久久久久吃药| EEUSS鲁片一区二区三区| 天天久久综合| 中文人妻主播久久| 91丨九色丨丰满人妖| 综久久久| 色狠狠色噜噜AV天堂五区| 99无码黄色视频| AV在线观看网站| 六月婷婷久久大全| 五月噜噜| 色综合久久88色综合天天人守婷| 91九色中文字幕女在线观看| 91人无码久久久久久| 亚洲色五月| 天天色播| 色五月激情五月| 亚州操操| 99热精品观看| 色婷婷综合影院| 国产色色色色| 久8色色| hd五月婷婷在线| 天天爽天天弄| 華人性愛AV在線| 91黄址| 日本熟妇精品99| 久草视频大香蕉99| 草草女人亚洲| 色婷婷网大全在线| 欧美三级A做爰在线观看| 国产67194| 色色激情| 天天干天天操天天拍| 99ri视频| 色色a| 涩五月婷婷| 免费观看的av| 夜夜操夜夜操| 青草五月天| 丁香五月激情五月| 夜夜骑夜夜操| 久久色五月天| 99自拍视频网站| 丁香婷婷91在线观看视频| 91丁香五月| aaaaa不卡| 开心五月婷婷五月| 婷婷五月天伊人在线| 激情网狠狠干| 夜夜操夜夜姧| 亚洲最大五月天成人网| 久久 这里只有精品1| 六月丁香婷婷网| 开心五月婷婷99| 天天综合网亚洲综合网| 99爱在线视频观看| 99热资源在线| 丁香五月另类色婷婷麻豆| 老司机日日夜夜青草| 99噜噜噜在线播放| 香蕉人妻AV久久久久天天| 香蕉久久五月| 欧美性猛交99久久久99| 女婷久久| 五月天色婷婷av| 色五月婷婷五月天激情综合| 日本色色色| 亚洲综合网 665566| 色婷婷久久| 五月Huangsewang| 97婷婷在线视频| 九九热a| 天天狠狠插| 色五月婷婷小说亚洲中文字幕组| 色综合中文| 久久婷婷六月综合| 国产午夜精品AV一区二区麻豆| 综合激情视频| 教师性爱毛片| 婷婷五月天Av| 开心久久xxx色| 激情五月婷婷色播网| 色情五月天丁香社区| 天天做夜夜爽| 午夜激情四射影院| 五月丁香啪啪激情| 性爱在线播放av| 欧美色色色色色| 婷婷91| 婷婷狠狠青青| 激情综合五月婷| 九九热这里只有精品31| 丁香五月天亚洲视频| 日日日日日| 亚洲无aV在线中文字幕| 精品久色| 色综合色综合色综合色综合| 婷婷五月天视频| 日韩三级高清无码| 色五月婷婷丁香五月| 色色日韩无码| 色五月婷婷九月| 狠狠干综合| 色播五月丁香综合| 久久婷婷五月草视频在线播放| 九九热在线视频观看| 亭亭五月色男人| 牛牛色av| 99热久久最新地址| 玖玖爱资源站| 99热这里只有国产精品| 99热在这里只有精品| 欧洲综合一区| 国产色丁香| 天堂五月婷婷| 六月色婷婷| 99久久玖玖| 五月婷婷丁香综合| 嫩草AV久久伊人妇女超级A| 久久99久久久久久久噜噜| 五月熟妇婷婷久久| 狠狠色婷婷| 毛v一区二区视频| 婷婷激情五月综合丁香社| 色欲色香综合网| 一起操 91N.com| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇| www.婷婷五月| 丁香五月综合激情久久潮喷| 天堂爱爱| 亚洲最大视频| 操日本三片99| 狠狠色综合网站久久久久| 91精品国产综合久久久不卡电影| 久/久精品99看9| 亚洲国产精品VA在线看黑人| 9九九久久精品无码专区| 丁香六月av| 日夜操B| 成人丁香色| 开心婷婷五月| 五月丁香色欲| 伊人婷婷激情| 婷婷五月天福利| 婷婷五月天受日本法律保护| 九九热在线视频| 高清国产一级婬片a免费| 色欲久久久久| 五月婷婷色在线| 伊人超碰| 97精品人人A片免费看| 永久无码色| 丁香六月在线| 五月婷婷无码| 国产无套精品一区二区| 4399精品一区二区| 伊人丁香花综合影院| 99热久久这里只有精品| 成人必爱视| 免费看欧美成人A片无码| 五月丁香六月色婷婷综合五月天| 成人AV在线电影| 99欧美| 综合网色| 婷婷五月天成人五月天| 欧美色色色色色| av一级棒av| www.狠狠操.con| 四川BBB搡BBB搡多人乱亂| 亚洲综合婷婷五月| 色八戒操婷婷| 天天做天天爱天天综合网|