<div id="palb5"><fieldset id="palb5"><strike id="palb5"></strike></fieldset></div>
      <center id="palb5"></center>
        <ruby id="palb5"><menuitem id="palb5"></menuitem></ruby>

          <em id="palb5"><ol id="palb5"></ol></em>
          太阳之歌女主角,棋王梁家辉,三毛学生意,绅士品格国语版全集,西安天空出现奇异云层,幽灵公主在线观看高清完整,蜜桃成熟时2未删减版,燃烧电视剧全集30集

          C語言基礎知識

          時間:2025-12-06 21:33:58 如意 C語言

          C語言基礎知識

            C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用于底層開發。C語言能以簡易的方式編譯、處理低級存儲器,下面是小編收集整理的C語言基礎知識,希望對大家有幫助!

          C語言基礎知識

            指針簡介

            指針是C語言中廣泛使用的一種數據類型。運用指針編程是C語言最主要的風格之一。利用指針變量可以表示各種數據結構; 能很方便地使用數組和字符串; 并能象匯編語言一樣處理內存地址,從而編出精練而高效的程序。指針極大地豐富了C語言的功能。 學習指針是學習C語言中最重要的一環, 能否正確理解和使用指針是我們是否掌握C語言的一個標志。同時, 指針也是C語言中最為困難的一部分,在學習中除了要正確理解基本概念,還必須要多編程,上機調試。只要作到這些,指針也是不難掌握的。

            指針的基本概念

            在計算機中,所有的數據都是存放在存儲器中的。 一般把存儲器中的一個字節稱為一個內存單元, 不同的數據類型所占用的內存單元數不等,如整型量占2個單元,字符量占1個單元等, 在第二章中已有詳細的介紹。為了正確地訪問這些內存單元, 必須為每個內存單元編上號。 根據一個內存單元的編號即可準確地找到該內存單元。內存單元的編號也叫做地址。 既然根據內存單元的編號或地址就可以找到所需的內存單元,所以通常也把這個地址稱為指針。 內存單元的指針和內存單元的內容是兩個不同的概念。 可以用一個通俗的例子來說明它們之間的關系。我們到銀行去存取款時, 銀行工作人員將根據我們的帳號去找我們的存款單, 找到之后在存單上寫入存款、取款的金額。在這里,帳號就是存單的指針, 存款數是存單的內容。對于一個內存單元來說,單元的地址即為指針, 其中存放的數據才是該單元的內容。在C語言中, 允許用一個變量來存放指針,這種變量稱為指針變量。因此, 一個指針變量的值就是某個內存單元的地址或稱為某內存單元的指針。圖中,設有字符變量C,其內容為“K”(ASCII碼為十進制數 75),C占用了011A號單元(地址用十六進數表示)。設有指針變量P,內容為011A, 這種情況我們稱為P指向變量C,或說P是指向變量C的指針。 嚴格地說,一個指針是一個地址, 是一個常量。而一個指針變量卻可以被賦予不同的指針值,是變。 但在常把指針變量簡稱為指針。為了避免混淆,我們中約定:“指針”是指地址, 是常量,“指針變量”是指取值為地址的變量。 定義指針的目的是為了通過指針去訪問內存單元。

            既然指針變量的值是一個地址, 那么這個地址不僅可以是變量的地址, 也可以是其它數據結構的地址。在一個指針變量中存放一

            個數組或一個函數的首地址有何意義呢? 因為數組或函數都是連續存放的。通過訪問指針變量取得了數組或函數的首地址, 也就找到了該數組或函數。這樣一來, 凡是出現數組,函數的地方都可以用一個指針變量來表示, 只要該指針變量中賦予數組或函數的首地址即可。這樣做, 將會使程序的概念十分清楚,程序本身也精練,高效。在C語言中, 一種數據類型或數據結構往往都占有一組連續的內存單元。 用“地址”這個概念并不能很好地描述一種數據類型或數據結構, 而“指針”雖然實際上也是一個地址,但它卻是一個數據結構的首地址, 它是“指向”一個數據結構的,因而概念更為清楚,表示更為明確。 這也是引入“指針”概念的一個重要原因。

            指針變量的類型說明

            對指針變量的類型說明包括三個內容:

            (1)指針類型說明,即定義變量為一個指針變量;

            (2)指針變量名;

            (3)變量值(指針)所指向的變量的數據類型。

            其一般形式為: 類型說明符 *變量名;

            其中,*表示這是一個指針變量,變量名即為定義的指針變量名,類型說明符表示本指針變量所指向的變量的數據類型。

            例如: int *p1;表示p1是一個指針變量,它的值是某個整型變量的地址。 或者說p1指向一個整型變量。至于p1究竟指向哪一個整型變量, 應由向p1賦予的地址來決定。

            再如:

            staic int *p2; /*p2是指向靜態整型變量的指針變量*/

            float *p3; /*p3是指向浮點變量的指針變量*/

            char *p4; /*p4是指向字符變量的指針變量*/ 應該注意的是,一個指針變量只能指向同類型的變量,如P3 只能指向浮點變量,不能時而指向一個浮點變量, 時而又指向一個字符變量。

            指針變量的賦值

            指針變量同普通變量一樣,使用之前不僅要定義說明, 而且必須賦予具體的值。未經賦值的指針變量不能使用, 否則將造成系統混亂,甚至死機。指針變量的賦值只能賦予地址, 決不能賦予任何其它數據,否則將引起錯誤。在C語言中, 變量的地址是由編譯系統分配的,對用戶完全透明,用戶不知道變量的具體地址。 C語言中提供了地址運算符&來表示變量的地址。其一般形式為: & 變量名; 如&a變示變量a的地址,&b表示變量b的地址。 變量本身必須預先說明。設有指向整型變量的指針變量p,如要把整型變量a 的地址賦予p可以有以下兩種方式:

            (1)指針變量初始化的方法 int a;

            int *p=&a;

            (2)賦值語句的方法 int a;

            int *p;

            p=&a;

            不允許把一個數賦予指針變量,故下面的賦值是錯誤的: int *p;p=1000; 被賦值的指針變量前不能再加“*”說明符,如寫為*p=&a 也是錯誤的

            指針變量的運算

            指針變量可以進行某些運算,但其運算的種類是有限的。 它只能進行賦值運算和部分算術運算及關系運算。

            1.指針運算符

            (1)取地址運算符&

            取地址運算符&是單目運算符,其結合性為自右至左,其功能是取變量的地址。在scanf函數及前面介紹指針變量賦值中,我們已經了解并使用了&運算符。

            (2)取內容運算符*

            取內容運算符*是單目運算符,其結合性為自右至左,用來表示指針變量所指的變量。在*運算符之后跟的變量必須是指針變量。需要注意的是指針運算符*和指針變量說明中的指針說明符* 不是一回事。在指針變量說明中,“*”是類型說明符,表示其后的變量是指針類型。而表達式中出現的“*”則是一個運算符用以表示指針變量所指的變量。

            main(){

            int a=5,*p=&a;

            printf ("%d",*p);

            }

            ......

            表示指針變量p取得了整型變量a的地址。本語句表示輸出變量a的值。

            2.指針變量的運算

            (1)賦值運算

            指針變量的賦值運算有以下幾種形式:

            ①指針變量初始化賦值,前面已作介紹。

            ②把一個變量的地址賦予指向相同數據類型的指針變量。例如:

            int a,*pa;

            pa=&a; /*把整型變量a的地址賦予整型指針變量pa*/

            ③把一個指針變量的值賦予指向相同類型變量的另一個指針變量。如:

            int a,*pa=&a,*pb;

            pb=pa; /*把a的地址賦予指針變量pb*/

            由于pa,pb均為指向整型變量的指針變量,因此可以相互賦值。 ④把數組的首地址賦予指向數組的指針變量。

            例如: int a[5],*pa;

            pa=a; (數組名表示數組的首地址,故可賦予指向數組的指針變量pa)

            也可寫為:

            pa=&a[0]; /*數組第一個元素的地址也是整個數組的首地址,

            也可賦予pa*/

            當然也可采取初始化賦值的方法:

            int a[5],*pa=a;

            ⑤把字符串的首地址賦予指向字符類型的指針變量。例如: char *pc;pc="c language";或用初始化賦值的方法寫為: char *pc="C Language"; 這里應說明的是并不是把整個字符串裝入指針變量, 而是把存放該字符串的字符數組的首地址裝入指針變量。 在后面還將詳細介紹。

            ⑥把函數的入口地址賦予指向函數的指針變量。例如: int (*pf)();pf=f; /*f為函數名*/

            (2)加減算術運算

            對于指向數組的指針變量,可以加上或減去一個整數n。設pa是指向數組a的指針變量,則pa+n,pa-n,pa++,++pa,pa--,--pa 運算都是合法的。指針變量加或減一個整數n的意義是把指針指向的當前位置(指向某數組元素)向前或向后移動n個位置。應該注意,數組指針變量向前或向后移動一個位置和地址加1或減1 在概念上是不同的。因為數組可以有不同的類型, 各種類型的數組元素所占的字節長度是不同的。如指針變量加1,即向后移動1 個位置表示指針變量指向下一個數據元素的首地址。而不是在原地址基礎上加1。

            例如:

            int a[5],*pa;

            pa=a; /*pa指向數組a,也是指向a[0]*/

            pa=pa+2; /*pa指向a[2],即pa的值為&pa[2]*/ 指針變量的加減運算只能對數組指針變量進行, 對指向其它類型變量的指針變量作加減運算是毫無意義的。(3)兩個指針變量之間的運算只有指向同一數組的兩個指針變量之間才能進行運算, 否則運算毫無意義。

            ①兩指針變量相減

            兩指針變量相減所得之差是兩個指針所指數組元素之間相差的元素個數。實際上是兩個指針值(地址) 相減之差再除以該數組元素的長度(字節數)。例如pf1和pf2 是指向同一浮點數組的兩個指針變量,設pf1的值為2010H,pf2的值為2000H,而浮點數組每個元素占4個字節,所以pf1-pf2的結果為(2000H-2010H)/4=4,表示pf1和 pf2之間相差4個元素。兩個指針變量不能進行加法運算。 例如, pf1+pf2是什么意思呢?毫無實際意義。

            ②兩指針變量進行關系運算

            指向同一數組的兩指針變量進行關系運算可表示它們所指數組元素之間的關系。例如:

            pf1==pf2表示pf1和pf2指向同一數組元素

            pf1>pf2表示pf1處于高地址位置

            pf1  main(){

            int a=10,b=20,s,t,*pa,*pb;

            pa=&a;

            pb=&b;

            s=*pa+*pb;

            t=*pa**pb;

            printf("a=%d b=%d a+b=%d a*b=%d ",a,b,a+b,a*b);

            printf("s=%d t=%d ",s,t);

            }

            ......

            說明pa,pb為整型指針變量

            給指針變量pa賦值,pa指向變量a。

            給指針變量pb賦值,pb指向變量b。

            本行的意義是求a+b之和,(*pa就是a,*pb就是b)。

            本行是求a*b之積。

            輸出結果。

            輸出結果。

            ......

            指針變量還可以與0比較。設p為指針變量,則p==0表明p是空指針,它不指向任何變量;p!=0表示p不是空指針。空指針是由對指針變量賦予0值而得到的。例如: #define NULL 0 int *p=NULL; 對指針變量賦0值和不賦值是不同的。指針變量未賦值時,可以是任意值,是不能使用的。否則將造成意外錯誤。而指針變量賦0值后,則可以使用,只是它不指向具體的變量而已。

            main(){

            int a,b,c,*pmax,*pmin;

            printf("input three numbers: ");

            scanf("%d%d%d",&a,&b,&c);

            if(a>b){

            pmax=&a;

            pmin=&b;}

            else{

            pmax=&b;

            pmin=&a;}

            if(c>*pmax) pmax=&c;

            if(c<*pmin) pmin=&c;

            printf("max=%d min=%d ",*pmax,*pmin);

            }

            ......

            pmax,pmin為整型指針變量。

            輸入提示。

            輸入三個數字。

            如果第一個數字大于第二個數字...

            指針變量賦值

            指針變量賦值

            指針變量賦值

            指針變量賦值

            判斷并賦值

            判斷并賦值

            輸出結果

            ......

            數組指針變量的說明和使用

            指向數組的指針變量稱為數組指針變量。 在討論數組指針變量的說明和使用之前,我們先明確幾個關系。

            一個數組是由連續的一塊內存單元組成的。 數組名就是這塊連續內存單元的首地址。一個數組也是由各個數組元素(下標變量) 組成的。每個數組元素按其類型不同占有幾個連續的內存單元。 一個數組元素的首地址也是指它所占有的幾個內存單元的首地址。 一個指針變量既可以指向一個數組,也可以指向一個數組元素, 可把數組名或第一個元素的地址賦予它。如要使指針變量指向第i號元素可以把i元素的首地址賦予它或把數組名加i賦予它。

            設有實數組a,指向a的指針變量為pa,從圖6.3中我們可以看出有以下關系:

            pa,a,&a[0]均指向同一單元,它們是數組a的首地址,也是0 號元素a[0]的首地址。pa+1,a+1,&a[1]均指向1號元素a[1]。類推可知a+i,a+i,&a[i]

            指向i號元素a[i]。應該說明的是pa是變量,而a,&a[i]都是常量。在編程時應予以注意。

            main(){

            int a[5],i;

            for(i=0;i<5;i++){

            a[i]=i;

            printf("a[%d]=%d ",i,a[i]);

            }

            printf(" ");

            }

            主函數

            定義一個整型數組和一個整型變量

            循環語句

            給數組賦值

            打印每一個數組的值

            ......

            輸出換行

            ......

            數組指針變量說明的一般形式為:

            類型說明符 * 指針變量名

            其中類型說明符表示所指數組的類型。 從一般形式可以看出指向數組的指針變量和指向普通變量的指針變量的說明是相同的。

            引入指針變量后,就可以用兩種方法來訪問數組元素了。

            第一種方法為下標法,即用a[i]形式訪問數組元素。 在第四章中介紹數組時都是采用這種方法。

            第二種方法為指針法,即采用*(pa+i)形式,用間接訪問的方法來訪問數組元素。

            main(){

            int a[5],i,*pa;

            pa=a;

            for(i=0;i<5;i++){

            *pa=i;

            pa++;

            }

            pa=a;

            for(i=0;i<5;i++){

            printf("a[%d]=%d ",i,*pa);

            pa++;

            }

            }

            主函數

            定義整型數組和指針

            將指針pa指向數組a

            循環

            將變量i的值賦給由指針pa指向的a[]的數組單元

            將指針pa指向a[]的下一個單元

            ......

            指針pa重新取得數組a的首地址

            循環

            用數組方式輸出數組a中的所有元素

            將指針pa指向a[]的下一個單元

            ......

            ......

            下面,另舉一例,該例與上例本意相同,但是實現方式不同。

            main(){

            int a[5],i,*pa=a;

            for(i=0;i<5;){

            *pa=i;

            printf("a[%d]=%d ",i++,*pa++);

            }

            }

            主函數

            定義整型數組和指針,并使指針指向數組a

            循環

            將變量i的值賦給由指針pa指向的a[]的數組單元

            用指針輸出數組a中的所有元素,同時指針pa指向a[]的下一個單元

            ......

            ......

            數組名和數組指針變量作函數參數

            在第五章中曾經介紹過用數組名作函數的實參和形參的問題。在學習指針變量之后就更容易理解這個問題了。 數組名就是數組的首地址,實參向形參傳送數組名實際上就是傳送數組的地址, 形參得到該地址后也指向同一數組。 這就好象同一件物品有兩個彼此不同的名稱一樣。同樣,指針變量的值也是地址, 數組指針變量的值即為數組的首地址,當然也可作為函數的參數使用。

            float aver(float *pa);

            main(){

            float sco[5],av,*sp;

            int i;

            sp=sco;

            printf(" input 5 scores: ");

            for(i=0;i<5;i++) scanf("%f",&sco[i]);

            av=aver(sp);

            printf("average score is %5.2f",av);

            }

            float aver(float *pa)

            {

            int i;

            float av,s=0;

            for(i=0;i<5;i++) s=s+*pa++;

            av=s/5;

            return av;

            }

            指向多維數組的指針變量

            本小節以二維數組為例介紹多維數組的指針變量。

            一、多維數組地址的表示方法

            設有整型二維數組a[3][4]如下:

            0 1 2 3

            4 5 6 7

            8 9 10 11

            設數組a的首地址為1000,各下標變量的首地址及其值如圖所示。在第四章中介紹過, C語言允許把一個二維數組分解為多個一維數組來處理。因此數組a可分解為三個一維數組,即a[0],a[1],a[2]。每一個一維數組又含有四個元素。例如a[0]數組,含有a[0][0],a[0][1],a[0][2],a[0][3]四個元素。 數組及數組元素的地址表示如下:a是二維數組名,也是二維數組0行的首地址,等于1000。a[0]是第一個一維數組的數組名和首地址,因此也為1000。*(a+0)或*a是與a[0]等效的, 它表示一維數組a[0]0 號元素的首地址。 也為1000。&a[0][0]是二維數組a的0行0列元素首地址,同樣是1000。因此,a,a[0],*(a+0),*a?amp;a[0][0]是相等的。同理,a+1是二維數組1行的首地址,等于1008。a[1]是第二個一維數組的數組名和首地址,因此也為1008。 &a[1][0]是二維數組a的1行0列元素地址,也是1008。因此a+1,a[1],*(a+1),&a[1][0]是等同的。 由此可得出:a+i,a[i],*(a+i),&a[i][0]是等同的。 此外,&a[i]和a[i]也是等同的。因為在二維數組中不能把&a[i]理解為元素a[i]的地址,不存在元素a[i]。

            C語言規定,它是一種地址計算方法,表示數組a第i行首地址。由此,我們得出:a[i],&a[i],*(a+i)和a+i也都是等同的。另外,a[0]也

            可以看成是a[0]+0是一維數組a[0]的0號元素的首地址, 而a[0]+1則是a[0]的1號元素首地址,由此可得出a[i]+j則是一維數組a[i]的j號元素首地址,它等于&a[i][j]。由a[i]=*(a+i)得a[i]+j=*(a+i)+j,由于*(a+i)+j是二維數組a的i行j列元素的首地址。該元素的值等于*(*(a+i)+j)。

            [Explain]#define PF "%d,%d,%d,%d,%d, "

            main(){

            static int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};

            printf(PF,a,*a,a[0],&a[0],&a[0][0]);

            printf(PF,a+1,*(a+1),a[1],&a[1],&a[1][0]);

            printf(PF,a+2,*(a+2),a[2],&a[2],&a[2][0]);

            printf("%d,%d ",a[1]+1,*(a+1)+1);

            printf("%d,%d ",*(a[1]+1),*(*(a+1)+1));

            }

            二、多維數組的指針變量

            把二維數組a 分解為一維數組a[0],a[1],a[2]之后,設p為指向二維數組的指針變量。可定義為: int (*p)[4] 它表示p是一個指針變量,它指向二維數組a 或指向第一個一維數組a[0],其值等于a,a[0],或&a[0][0]等。而p+i則指向一維數組a[i]。從前面的分析可得出*(p+i)+j是二維數組i行j 列的元素的地址,而*(*(p+i)+j)則是i行j列元素的值。

            二維數組指針變量說明的一般形式為: 類型說明符 (*指針變量名)[長度] 其中“類型說明符”為所指數組的數據類型。“*”表示其后的變量是指針類型。 “長度”表示二維數組分解為多個一維數組時, 一維數組的長度,也就是二維數組的列數。應注意“(*指針變量名)”兩邊的括號不可少,如缺少括號則表示是指針數組(本章后面介紹),意義就完全不同了。

            [Explain]main(){

            static int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};

            int(*p)[4];

            int i,j;

            p=a;

            for(i=0;i<3;i++)

            for(j=0;j<4;j++) printf("- ",*(*(p+i)+j));

            }

            'Expain字符串指針變量的說明和使用字符串指針變量的定義說明與指向字符變量的指針變量說明是相同的。只能按對指針變量的賦值不同來區別。 對指向字符變量的指針變量應賦予該字符變量的地址。如: char c,*p=&c;表示p是一個指向字符變量c的指針變量。而: char *s="C Language";則表示s是一個指向字符串的指針變量。把字符串的首地址賦予s。

            請看下面一例。

            main(){

            char *ps;

            ps="C Language";

            printf("%s",ps);

            }

            運行結果為:

            C Language

            上例中,首先定義ps是一個字符指針變量, 然后把字符串的首地址賦予ps(應寫出整個字符串,以便編譯系統把該串裝入連續的一塊內存單元),并把首地址送入ps。程序中的: char *ps;ps="C Language";等效于: char *ps="C Language";輸出字符串中n個字符后的所有字符。

            main(){

            char *ps="this is a book";

            int n=10;

            ps=ps+n;

            printf("%s ",ps);

            }

            運行結果為:

            book 在程序中對ps初始化時,即把字符串首地址賦予ps,當ps= ps+10之后,ps指向字符“b”,因此輸出為"book"。

            main(){

            char st[20],*ps;

            int i;

            printf("input a string: ");

            ps=st;

            scanf("%s",ps);

            for(i=0;ps[i]!='';i++)

            if(ps[i]=='k'){

            printf("there is a 'k' in the string ");

            break;

            }

            if(ps[i]=='') printf("There is no 'k' in the string ");

            }

            本例是在輸入的字符串中查找有無‘k’字符。 下面這個例子是將指針變量指向一個格式字符串,用在printf函數中,用于輸出二維數組的各種地址表示的值。但在printf語句中用指針變量PF代替了格式串。 這也是程序中常用的方法。

            main(){

            static int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};

            char *PF;

            PF="%d,%d,%d,%d,%d ";

            printf(PF,a,*a,a[0],&a[0],&a[0][0]);

            printf(PF,a+1,*(a+1),a[1],&a[1],&a[1][0]);

            printf(PF,a+2,*(a+2),a[2],&a[2],&a[2][0]);

            printf("%d,%d ",a[1]+1,*(a+1)+1);

            printf("%d,%d ",*(a[1]+1),*(*(a+1)+1));

            }

            在下例是講解,把字符串指針作為函數參數的使用。要求把一個字符串的內容復制到另一個字符串中,并且不能使用strcpy函數。函數cprstr的形參為兩個字符指針變量。pss指向源字符串,pds指向目標字符串。表達式:

            (*pds=*pss)!=`'

            cpystr(char *pss,char *pds){

            while((*pds=*pss)!=''){

            pds++;

            pss++; }

            }

            main(){

            char *pa="CHINA",b[10],*pb;

            pb=b;

            cpystr(pa,pb);

            printf("string a=%s string b=%s ",pa,pb);

            }

            在上例中,程序完成了兩項工作:一是把pss指向的源字符復制到pds所指向的目標字符中,二是判斷所復制的字符是否為`',若是則表明源字符串結束,不再循環。否則,pds和pss都加1,指向下一字符。在主函數中,以指針變量pa,pb為實參,分別取得確定值后調用cprstr函數。由于采用的指針變量pa和pss,pb和pds均指向同一字符串,因此在主函數和cprstr函數中均可使用這些字符串。也可以把cprstr函數簡化為以下形式:

            cprstr(char *pss,char*pds)

            {while ((*pds++=*pss++)!=`');}

            即把指針的移動和賦值合并在一個語句中。 進一步分析還可發現`'的ASCⅡ碼為0,對于while語句只看表達式的值為非0就循環,為0則結束循環,因此也可省去“!=`'”這一判斷部分,而寫為以下形式:

            cprstr (char *pss,char *pds)

            {while (*pdss++=*pss++);}

            表達式的意義可解釋為,源字符向目標字符賦值, 移動指針,若所賦值為非0則循環,否則結束循環。這樣使程序更加簡潔。簡化后的程序如下所示。

            cpystr(char *pss,char *pds){

            while(*pds++=*pss++);

            }

            main(){

            char *pa="CHINA",b[10],*pb;

            pb=b;

            cpystr(pa,pb);

            printf("string a=%s string b=%s ",pa,pb);

            }

            使用字符串指針變量與字符數組的區別

            用字符數組和字符指針變量都可實現字符串的存儲和運算。 但是兩者是有區別的。在使用時應注意以下幾個問題:

            1. 字符串指針變量本身是一個變量,用于存放字符串的首地址。而字符串本身是存放在以該首地址為首的一塊連續的內存空間中并以‘’作為串的結束。字符數組是由于若干個數組元素組成的,它可用來存放整個字符串。

            2. 對字符數組作初始化賦值,必須采用外部類型或靜態類型,如: static char st[]={“C Language”};而對字符串指針變量則無此限制,如: char *ps="C Language";

            3. 對字符串指針方式 char *ps="C Language";可以寫為: char *ps; ps="C Language";而對數組方式:

            static char st[]={"C Language"};

            不能寫為:

            char st[20];st={"C Language"};

            而只能對字符數組的各元素逐個賦值。

            從以上幾點可以看出字符串指針變量與字符數組在使用時的區別,同時也可看出使用指針變量更加方便。前面說過,當一個指針變量在未取得確定地址前使用是危險的,容易引起錯誤。但是對指針變量直接賦值是可以的。因為C系統對指針變量賦值時要給以確定的地址。因此,

            char *ps="C Langage";

            或者 char *ps;

            ps="C Language";都是合法的。

            函數指針變量

            在C語言中規定,一個函數總是占用一段連續的內存區, 而函數名就是該函數所占內存區的首地址。 我們可以把函數的這個首地址(或稱入口地址)賦予一個指針變量, 使該指針變量指向該函數。然后通過指針變量就可以找到并調用這個函數。 我們把這種指向函數的指針變量稱為“函數指針變量”。

            函數指針變量定義的一般形式為:

            類型說明符 (*指針變量名)();

            其中“類型說明符”表示被指函數的返回值的類型。“(* 指針變量名)”表示“*”后面的變量是定義的指針變量。 最后的空括號表示指針變量所指的是一個函數。

            例如: int (*pf)();

            表示pf是一個指向函數入口的指針變量,該函數的返回值(函數值)是整型。

            下面通過例子來說明用指針形式實現對函數調用的方法。

            int max(int a,int b){

            if(a>b)return a;

            else return b;

            }

            main(){

            int max(int a,int b);

            int(*pmax)();

            int x,y,z;

            pmax=max;

            printf("input two numbers: ");

            scanf("%d%d",&x,&y);

            z=(*pmax)(x,y);

            printf("maxmum=%d",z);

            }

            從上述程序可以看出用,函數指針變量形式調用函數的步驟如下:1. 先定義函數指針變量,如后一程序中第9行 int (*pmax)();定義pmax為函數指針變量。

            2. 把被調函數的入口地址(函數名)賦予該函數指針變量,如程序中第11行 pmax=max;

            3. 用函數指針變量形式調用函數,如程序第14行 z=(*pmax)(x,y); 調用函數的一般形式為: (*指針變量名) (實參表)使用函數指針變量還應注意以下兩點:

            a. 函數指針變量不能進行算術運算,這是與數組指針變量不同的。數組指針變量加減一個整數可使指針移動指向后面或前面的數組元素,而函數指針的移動是毫無意義的。

            b. 函數調用中"(*指針變量名)"的兩邊的括號不可少,其中的*不應該理解為求值運算,在此處它只是一種表示符號。

            指針型函數

            前面我們介紹過,所謂函數類型是指函數返回值的類型。 在C語言中允許一個函數的返回值是一個指針(即地址), 這種返回指針值的函數稱為指針型函數。

            定義指針型函數的一般形式為:

            類型說明符 *函數名(形參表)

            {

            …… /*函數體*/

            }

            其中函數名之前加了“*”號表明這是一個指針型函數,即返回值是一個指針。類型說明符表示了返回的指針值所指向的數據類型。

            如:

            int *ap(int x,int y)

            {

            ...... /*函數體*/

            }

            表示ap是一個返回指針值的指針型函數, 它返回的指針指向一個整型變量。下例中定義了一個指針型函數 day-name,它的返回值指向一個字符串。該函數中定義了一個靜態指針數組name。name 數組初始化賦值為八個字符串,分別表示各個星期名及出錯提示。形參n表示與星期名所對應的整數。在主函數中, 把輸入的整數i作為實參, 在printf語句中調用day-name函數并把i值傳送給形參 n。day-name函數中的return語句包含一個條件表達式, n 值若大于7或小于1則把name[0] 指針返回主函數輸出出錯提示字符串“Illegal day”。否則返回主函數輸出對應的星期名。主函數中的第7行是個條件語句,其語義是,如輸入為負數(i<0)則中止程序運行退出程序。exit是一個庫函數,exit(1)表示發生錯誤后退出程序, exit(0)表示正常退出。

            應該特別注意的是函數指針變量和指針型函數這兩者在寫法和意義上的區別。如int(*p)()和int *p()是兩個完全不同的量。int(*p)()是一個變量說明,說明p 是一個指向函數入口的指針變量,該函數的返回值是整型量,(*p)的兩邊的括號不能少。int *p() 則不是變量說明而是函數說明,說明p是一個指針型函數,其返回值是一個指向整型量的指針,*p兩邊沒有括號。作為函數說明, 在括號內最好寫入形式參數,這樣便于與變量說明區別。 對于指針型函數定義,int *p()只是函數頭部分,一般還應該有函數體部分。

            main(){

            int i;

            char *day-name(int n);

            printf("input Day No: ");

            scanf("%d",&i);

            if(i<0) exit(1);

            printf("Day No:--->%s ",i,day-name(i));

            }

            char *day-name(int n){

            static char *name[]={ "Illegal day",

            "Monday",

            "Tuesday",

            "Wednesday",

            "Thursday",

            "Friday",

            "Saturday",

            "Sunday"};

            return((n<1||n>7) ? name[0] : name[n]);

            }

            本程序是通過指針函數,輸入一個1~7之間的整數, 輸出對應的星期名。指針數組的說明與使用一個數組的元素值為指針則是指針數組。 指針數組是一組有序的指針的集合。 指針數組的所有元素都必須是具有相同存儲類型和指向相同數據類型的指針變量。

            指針數組說明的一般形式為: 類型說明符*數組名[數組長度]

            其中類型說明符為指針值所指向的變量的類型。例如: int *pa[3] 表示pa是一個指針數組,它有三個數組元素, 每個元素值都是一個指針,指向整型變量。通常可用一個指針數組來指向一個二維數組。 指針數組中的每個元素被賦予二維數組每一行的首地址, 因此也可理解為指向一個一維數組。圖6—6表示了這種關系。

            int a[3][3]={1,2,3,4,5,6,7,8,9};

            int *pa[3]={a[0],a[1],a[2]};

            int *p=a[0];

            main(){

            int i;

            for(i=0;i<3;i++)

            printf("%d,%d,%d ",a[i][2-i],*a[i],*(*(a+i)+i));

            for(i=0;i<3;i++)

            printf("%d,%d,%d ",*pa[i],p[i],*(p+i));

            }

            本例程序中,pa是一個指針數組,三個元素分別指向二維數組a的各行。然后用循環語句輸出指定的數組元素。其中*a[i]表示i行0列元素值;*(*(a+i)+i)表示i行i列的元素值;*pa[i]表示i行0列元素值;由于p與a[0]相同,故p[i]表示0行i列的值;*(p+i)表示0行i列的值。讀者可仔細領會元素值的各種不同的表示方法。 應該注意指針數組和二維數組指針變量的區別。 這兩者雖然都可用來表示二維數組,但是其表示方法和意義是不同的。

            二維數組指針變量是單個的變量,其一般形式中"(*指針變量名)"兩邊的括號不可少。而指針數組類型表示的是多個指針( 一組有序指針)在一般形式中"*指針數組名"兩邊不能有括號。例如: int (*p)[3];表示一個指向二維數組的指針變量。該二維數組的列數為3或分解為一維數組的長度為3。 int *p[3] 表示p是一個指針數組,有三個下標變量p[0],p[1],p[2]均為指針變量。

            指針數組也常用來表示一組字符串, 這時指針數組的每個元素被賦予一個字符串的首地址。 指向字符串的指針數組的初始化更為簡單。例如在例6.20中即采用指針數組來表示一組字符串。 其初始化賦值為:

            char *name[]={"Illagal day",

            "Monday",

            "Tuesday",

            "Wednesday",

            "Thursday",

            "Friday",

            "Saturday",

            "Sunday"};

            完成這個初始化賦值之后,name[0]即指向字符串"Illegal day",name[1]指?quot;Monday"......。

            指針數組也可以用作函數參數。在本例主函數中,定義了一個指針數組name,并對name 作了初始化賦值。其每個元素都指向一個字符串。然后又以name 作為實參調用指針型函數day name,在調用時把數組名 name 賦予形參變量name,輸入的整數i作為第二個實參賦予形參n。在day name函數中定義了兩個指針變量pp1和pp2,pp1被賦予name[0]的值(即*name),pp2被賦予name[n]的值即*(name+ n)。由條件表達式決定返回pp1或pp2指針給主函數中的指針變量ps。最后輸出i和ps的值。

            指針數組作指針型函數的參數

            main(){

            static char *name[]={ "Illegal day",

            "Monday",

            "Tuesday",

            "Wednesday",

            "Thursday",

            "Friday",

            "Saturday",

            "Sunday"};

            char *ps;

            int i;

            char *day name(char *name[],int n);

            printf("input Day No: ");

            scanf("%d",&i);

            if(i<0) exit(1);

            ps=day name(name,i);

            printf("Day No:--->%s ",i,ps);

            }

            char *day name(char *name[],int n)

            {

            char *pp1,*pp2;

            pp1=*name;

            pp2=*(name+n);

            return((n<1||n>7)? pp1:pp2);

            }

            下例要求輸入5個國名并按字母順序排列后輸出。在以前的例子中采用了普通的排序方法, 逐個比較之后交換字符串的位置。交換字符串的物理位置是通過字符串復制函數完成的。 反復的交換將使程序執行的速度很慢,同時由于各字符串(國名) 的長度不同,又增加了存儲管理的負擔。 用指針數組能很好地解決這些問題。把所有的字符串存放在一個數組中, 把這些字符數組的首地址放在一個指針數組中,當需要交換兩個字符串時, 只須交換指針數組相應兩元素的內容(地址)即可,而不必交換字符串本身。程序中定義了兩個函數,一個名為sort完成排序, 其形參為指

            針數組name,即為待排序的各字符串數組的指針。形參n為字符串的個數。另一個函數名為print,用于排序后字符串的輸出,其形參與sort的形參相同。主函數main中,定義了指針數組name 并作了初始化賦值。然后分別調用sort函數和print函數完成排序和輸出。值得說明的是在sort函數中,對兩個字符串比較,采用了strcmp 函數,strcmp函數允許參與比較的串以指針方式出現。name[k]和name[ j]均為指針,因此是合法的。字符串比較后需要交換時, 只交換指針數組元素的值,而不交換具體的字符串, 這樣將大大減少時間的開銷,提高了運行效率。

            現編程如下:

            #include"string.h"

            main(){

            void sort(char *name[],int n);

            void print(char *name[],int n);

            static char *name[]={ "CHINA","AMERICA","AUSTRALIA",

            "FRANCE","GERMAN"};

            int n=5;

            sort(name,n);

            print(name,n);

            }

            void sort(char *name[],int n){

            char *pt;

            int i,j,k;

            for(i=0;i  k=i;

            for(j=i+1;j  if(strcmp(name[k],name[j])>0) k=j;

            if(k!=i){

            pt=name[i];

            name[i]=name[k];

            name[k]=pt;

            }

            }

            }

            void print(char *name[],int n){

            int i;

            for (i=0;i  }

            main函數的參數

            前面介紹的main函數都是不帶參數的。因此main 后的括號都是空括號。實際上,main函數可以帶參數,這個參數可以認為是 main函數的形式參數。C語言規定main函數的參數只能有兩個, 習慣上這兩個參數寫為argc和argv。因此,main函數的函數頭可寫為: main (argc,argv)C語言還規定argc(第一個形參)必須是整型變量,argv( 第二個形參)必須是指向字符串的指針數組。加上形參說明后,main函數的函數頭應寫為:

            main (argc,argv)

            int argv;

            char *argv[];或寫成:

            main (int argc,char *argv[])

            由于main函數不能被其它函數調用, 因此不可能在程序內部取得實際值。那么,在何處把實參值賦予main函數的形參呢? 實際上,main函數的參數值是從操作系統命令行上獲得的。當我們要運行一個可執行文件時,在DOS提示符下鍵入文件名,再輸入實際參數即可把這些實參傳送到main的形參中去。

            DOS提示符下命令行的一般形式為: C:>可執行文件名 參數 參數……; 但是應該特別注意的是,main 的兩個形參和命令行中的參數在

            位置上不是一一對應的。因為,main的形參只有二個,而命令行中的參數個數原則上未加限制。argc參數表示了命令行中參數的個數(注意:文件名本身也算一個參數),argc的值是在輸入命令行時由系統按實際參數的個數自動賦予的。例如有命令行為: C:>E6 24 BASIC dbase FORTRAN由于文件名E6 24本身也算一個參數,所以共有4個參數,因此argc取得的值為4。argv參數是字符串指針數組,其各元素值為命令行中各字符串(參數均按字符串處理)的首地址。 指針數組的長度即為參數個數。數組元素初值由系統自動賦予。其表示如圖6.8所示:

            main(int argc,char *argv){

            while(argc-->1)

            printf("%s ",*++argv);

            }

            本例是顯示命令行中輸入的參數如果上例的可執行文件名為e24.exe,存放在A驅動器的盤內。

            因此輸入的命令行為: C:>a:e24 BASIC dBASE FORTRAN

            則運行結果為:

            BASIC

            dBASE

            FORTRAN

            該行共有4個參數,執行main時,argc的初值即為4。argv的4個元素分為4個字符串的首地址。執行while語句,每循環一次 argv值減1,當argv等于1時停止循環,共循環三次, 因此共可輸出三個參數。在printf函數中,由于打印項*++argv是先加1再打印, 故第一次打印的是argv[1]所指的字符串BASIC。第二、 三次循環分別打印后二個字符串。而參數e24是文件名,不必輸出。

            下例的命令行中有兩個參數,第二個參數20即為輸入的n值。在程序中*++argv的值為字符串“20”,然后用函數"atoi"把它換為整型作為while語句中的循環控制變量,輸出20個偶數。

            #include"stdlib.h"

            main(int argc,char*argv[]){

            int a=0,n;

            n=atoi(*++argv);

            while(n--) printf("%d ",a++*2);

            }

            本程序是從0開始輸出n個偶數。指向指針的指針變量如果一個指針變量存放的又是另一個指針變量的地址, 則稱這個指針變量為指向指針的指針變量。

            在前面已經介紹過,通過指針訪問變量稱為間接訪問, 簡稱間訪。由于指針變量直接指向變量,所以稱為單級間訪。 而如果通過指向指針的指針變量來訪問變量則構成了二級或多級間訪。在C語言程序中,對間訪的級數并未明確限制, 但是間訪級數太多時不容易理解解,也容易出錯,因此,一般很少超過二級間訪。 指向指針的指針變量說明的一般形式為:

            類型說明符** 指針變量名;

            例如: int ** pp; 表示pp是一個指針變量,它指向另一個指針變量, 而這個指針變量指向一個整型量。下面舉一個例子來說明這種關系。

            main(){

            int x,*p,**pp;

            x=10;

            p=&x;

            pp=&p;

            printf("x=%d ",**pp);

            }

            上例程序中p 是一個指針變量,指向整型量x;pp也是一個指針變量, 它指向指針變量p。通過pp變量訪問x的寫法是**pp。程序最后輸出x的值為10。通過上例,讀者可以學習指向指針的指針變量的說明和使用方法。

            下述程序中首先定義說明了指針數組ps并作了初始化賦值。 又說明了pps是一個指向指針的指針變量。在5次循環中, pps 分別取得了ps[0],ps[1],ps[2],ps[3],ps[4]的地址值(如圖6.10所示)。再通過這些地址即可找到該字符串。

            main(){

            static char *ps[]={ "BASIC","DBASE","C","FORTRAN",

            "PASCAL"};

            char **pps;

            int i;

            for(i=0;i<5;i++){

            pps=ps+i;

            printf("%s ",*pps);

            }

            }

            本程序是用指向指針的指針變量編程,輸出多個字符串。

            本章小結

            1. 指針是C語言中一個重要的組成部分,使用指針編程有以下優點:

            (1)提高程序的編譯效率和執行速度。

            (2)通過指針可使用主調函數和被調函數之間共享變量或數據結構,便于實現雙向數據通訊。

            (3)可以實現動態的存儲分配。

            (4)便于表示各種數據結構,編寫高質量的程序。

            2. 指針的運算

            (1)取地址運算符&:求變量的地址

            (2)取內容運算符*:表示指針所指的變量

            (3)賦值運算

            ·把變量地址賦予指針變量

            ·同類型指針變量相互賦值

            ·把數組,字符串的首地址賦予指針變量

            ·把函數入口地址賦予指針變量

            (4)加減運算

            對指向數組,字符串的指針變量可以進行加減運算,如p+n,p-n,p++,p--等。對指向同一數組的兩個指針變量可以相減。對指向其它類型的指針變量作加減運算是無意義的。

            (5)關系運算

            指向同一數組的兩個指針變量之間可以進行大于、小于、 等于比較運算。指針可與0比較,p==0表示p為空指針。

            3. 與指針有關的各種說明和意義見下表。

            int *p; p為指向整型量的指針變量

            int *p[n]; p為指針數組,由n個指向整型量的指針元素組成。

            int (*p)[n]; p為指向整型二維數組的指針變量,二維數組的列數為n

            int *p() p為返回指針值的函數,該指針指向整型量

            int (*p)() p為指向函數的指針,該函數返回整型量

            int **p p為一個指向另一指針的指針變量,該指針指向一個整型量。

            4. 有關指針的說明很多是由指針,數組,函數說明組合而成的。

            但并不是可以任意組合,例如數組不能由函數組成,即數組元素不能是一個函數;函數也不能返回一個數組或返回另一個函數。例如

            int a[5]();就是錯誤的。

            5. 關于括號

            在解釋組合說明符時, 標識符右邊的方括號和圓括號優先于標識符左邊的“*”號,而方括號和圓括號以相同的優先級從左到右結合。但可以用圓括號改變約定的結合順序。

            6. 閱讀組合說明符的規則是“從里向外”。

            從標識符開始,先看它右邊有無方括號或園括號,如有則先作出解釋,再看左邊有無*號。 如果在任何時候遇到了閉括號,則在繼續之前必須用相同的規則處理括號內的內容。例如:

            int*(*(*a)())[10]

            ↑ ↑↑↑↑↑↑

            7 6 4 2 1 3 5

            上面給出了由內向外的閱讀順序,下面來解釋它:

            (1)標識符a被說明為;

            (2)一個指針變量,它指向;

            (3)一個函數,它返回;

            (4)一個指針,該指針指向;

            (5)一個有10個元素的數組,其類型為;

            (6)指針型,它指向;

            (7)int型數據。

            因此a是一個函數指針變量,該函數返回的一個指針值又指向一個指針數組,該指針數組的元素指向整型量。

            基本數據類型

            void:聲明函數無返回值或無參數,聲明無類型指針,顯示丟棄運算結果。(C89標準新增)

            char:字符型類型數據,屬于整型數據的一種。(K&R時期引入)

            int:整型數據,表示范圍通常為編譯器指定的內存字節長。(K&R時期引入)

            float:單精度浮點型數據,屬于浮點數據的一種。(K&R時期引入)

            double:雙精度浮點型數據,屬于浮點數據的一種。(K&R時期引入)

            -Bool:布爾型(C99標準新增)

            -Complex:復數的基本類型(C99標準新增)

            -Imaginary:虛數,與復數基本類型相似,沒有實部的純虛數(C99標準新增)

            -Generic:提供重載的接口入口(C11標準新增)

            類型修飾關鍵字

            short:修飾int,短整型數據,可省略被修飾的int。(K&R時期引入)

            long:修飾int,長整型數據,可省略被修飾的int。(K&R時期引入)

            long long:修飾int,超長整型數據,可省略被修飾的int。(C99標準新增)

            signed:修飾整型數據,有符號數據類型。(C89標準新增)

            unsigned:修飾整型數據,無符號數據類型。(K&R時期引入)

            restrict:用于限定和約束指針,并表明指針是訪問一個數據對象的唯一且初始的方式。(C99標準新增)

            復雜類型關鍵字

            struct:結構體聲明。(K&R時期引入)

            union:聯合體聲明。(K&R時期引入)

            enum:枚舉聲明。(C89標準新增)

            typedef:聲明類型別名。(K&R時期引入)

            sizeof:得到特定類型或特定類型變量的大小。(K&R時期引入)

            inline:內聯函數用于取代宏定義,會在任何調用它的地方展開。(C99標準新增)

            存儲級別關鍵字

            auto:指定為自動變量,由編譯器自動分配及釋放。通常在棧上分配。與static相反。當變量未指定時默認為auto。(K&R時期引入)

            static:指定為靜態變量,分配在靜態變量區,修飾函數時,指定函數作用域為文件內部。(K&R時期引入)

            register:指定為寄存器變量,建議編譯器將變量存儲到寄存器中使用,也可以修飾函數形參,建議編譯器通過寄存器而不是堆棧傳遞參數。(K&R時期引入)

            extern:指定對應變量為外部變量,即標示變量或者函數的定義在別的文件中,提示編譯器遇到此變量和函數時在其他模塊中尋找其定義。(K&R時期引入)

            const:指定變量不可被當前線程改變(但有可能被系統或其他線程改變)。(C89標準新增)

            volatile:指定變量的值有可能會被系統或其他線程改變,強制編譯器每次從內存中取得該變量的值,阻止編譯器把該變量優化成寄存器變量。(C89標準新增)

            流程控制關鍵字

            跳轉結構

            return:用在函數體中,返回特定值(如果是void類型,則不返回函數值)。(K&R時期引入)

            continue:結束當前循環,開始下一輪循環。(K&R時期引入)

            break:跳出當前循環或switch結構。(K&R時期引入)

            goto:無條件跳轉語句。(K&R時期引入)

            分支結構

            if:條件語句,后面不需要放分號。(K&R時期引入)

            else:條件語句否定分支(與if連用)。(K&R時期引入)

            switch:開關語句(多重分支語句)。(K&R時期引入)

            case:開關語句中的分支標記,與switch連用。(K&R時期引入)

            default:開關語句中的“其他”分支,可選。(K&R時期引入)

            編譯

            #define 預編譯宏

            #if 表達式 #else if 表達式 #else #endif 條件編譯

            #ifdef 宏 #else #endif 條件編譯

            #ifndef 宏 #else #endif 條件編譯與條件編譯

            c語言知識易錯點

            1.書寫標識符時,忽略了大小寫字母的區別。

            2.忽略了變量的類型,進行了不合法的運算。

            3.將字符常量與字符串常量混淆。

            4.忽略了“=”與“==”的區別。

            5.忘記加分號。分號是C語句中不可缺少的一部分,語句末尾必須有分號。

            6.多加分號。 復合語句的花括號后不應再加分號,否則將會畫蛇添足。

            7.輸入變量時忘記加地址運算符“&”。

            8.輸入數據的方式與要求不符。代碼①scanf("%d%d",&a,&b);輸入時,不能用逗號作兩個數據間的分隔符②scanf("%d,%d",&a,&b);C規定:如果在“格式控制”字符串中除了格式說明以外還有其它字符,則在輸入數據時應輸入與這些字符相同的字符。

            9.輸入字符的格式與要求不一致。在用“%c”格式輸入字符時,“空格字符”和“轉義字符”都作為有效字符輸入。

            10.輸入輸出的數據類型與所用格式說明符不一致。

            11.輸入數據時,企圖規定精度。

            12.switch語句中漏寫break語句。

            13.忽視了while和do-while語句在細節上的區別。

            14.定義數組時誤用變量。

            15.在定義數組時,將定義的“元素個數”誤認為是可使的最大下標值。

            16.初始化數組時,未使用靜態存儲。

            17.在不應加地址運算符&的位置加了地址運算符。

            18.同時定義了形參和函數中的局部變量。

          【C語言基礎知識】相關文章:

          C語言的基礎知識10-20

          C語言程序基礎知識10-24

          C語言基礎知識總結10-24

          C語言基礎知識集錦10-29

          c語言入門基礎知識11-17

          c語言公共基礎知識12-31

          C語言基礎知識大全02-02

          C語言基礎知識匯總01-19

          c語言之指針基礎知識08-26

          主站蜘蛛池模板: 冢本怀旧剧场免费观看| 来自星星的你电视剧全集| 死神229| 终末的女武神第三季观看全集| 四名少妇精油按摩| 浪漫玛丽国语版全集| 自主招生自荐信| 不完美的女人未删减| 我的妹妹雯雯| 生死决断完整版秋瓷炫| 韩国理论片OK电影天堂| 锦月如歌电视剧36集全| 女律师的堕落电影免费观看| 快乐小神仙| 鬼灭之刃免费看| 唐伯虎vlog免费观看全集1446 | 新金瓶梅2在线观看| 动感之星269集小玲| 青春守艺人在哪里播出| 《如梦令》电视剧| 德令哈一夜刀郎原唱| 美剧 监狱风云| 菲律宾电影《健身房教练》的导演是 | 激战HD| 一年级大结局下| 电视剧兄弟兄弟免费观看全集| 沉香如屑共多少集| 女战狼6免费观看在线播放高清| 二级三级配电箱区别| 当旺爸爸剧情| 美丽的秘密4动漫免费观看 | 玩命追踪在线观看| 私人女性监狱电视剧完整版观看| 惊天魔盗团2资源| 奔跑吧生态篇| 日本“天降巨大火球”闪诡异绿光| 归路连续剧| 富有的玫瑰1987| 李立群个人资料简介| 绝色美人谋短剧在线观看全集| 房奴试爱电视剧开头原声| 朋友的妈妈在线免费看| 我的老师中韩双字| 玫瑰的故事电视剧在线观看| xl司令在线观看免费| 蜜汁炖鱿鱼电视剧棉免费全集| 17.3电影在线观看| 无主之花电影| 猎罪图鉴2| 河南戏曲频道在线直播| 短剧短剧| 一颗红豆| 黑白配国语版免费观看| 禁忌女孩| 大风杀电影免费观看| 美国式保罗4原版| 去有风的地方电视剧观看| 八仙全集| yellow视频在线观看免费高清无吗| 天海翼秘密搜查官在线观看| 老公是全球大佬:闪婚首富短剧全集| 八戒,八戒网剧在线观看7| 我的青梅竹马是消防员未删减| 热血忠魂| 妄人妄途全集观看| 我们的爱情有点疯狂| 菲律宾电影《兽行》的剧情简介| 华尔街1| 党同伐异免费| 王多鱼打扑克| 十三号星期五| 天涯浴血 电视剧| 学生的母亲5字ID| 只愿君心似我心短剧免费观看全集| 爱情公寓3 19| 白峰美羽电影| 寒战2粤语| 看不见的朋友| 坎贝奇《无憾人生》| 帝王红颜劫| 庆余年2精彩片段| over flow动漫在线观看全 | 监利县| 还珠格格花絮| 名侦探波罗和马普尔夫人| 需要爸爸种子 - 在线追剧| 周渝民最新电影| 七十二家房客第九季| 《V酒店》第一季| 肖申克的救赎bt种子| 成熟的女人免费观看电视剧| 007女版满天星在线观看| 最牛女村主任| 宇宙星神全集2| 星克莱尔《迷宫》| 叶问前传| 巡回检察组43| 白峰美羽| 神隐电视剧1-40集全免费| 最近日本电影高清免费观看| 《女狱警》法国版正版| 悬崖上的金鱼姬普通话版免费观看| 《我最喜欢妈妈》动漫最新一集| 《偷极乐宝鉴》叶子楣国语百度网盘| 初恋优酷| 东宫电视剧全集免费观看完整版| 英雄有约| 圣特罗佩斯的姑娘们在线观看| 《新无主之花》电影| 琉璃免费观看| 男按摩师在线免费观看| 灵与欲百度影音| 恶作剧之吻第一部| 21世纪性格爱情指南全8集中文| 大喜临门| 电视剧江湖恩仇录| 入室暴行中文版免费观看完整版| 731恐怖女体实验| 尖峰时刻3下载| 义姐是不是良喂养1-3集动漫| 铁甲威龙| 《杀出黎明》| 三位大学位按摩记| 《疯狂农场3》免费观看中文版| 无上神帝全集免费观看| 超碰10| 商务旅馆带绿帽子在线观看| 《情欲房》完整版| 冰雪女皇| 免费看我要爸爸播种子| 男女一起愁愁愁电影全集在线| 这就是命电影免费观看完整版| 高压监狱3法国版免费播放| 义姐是不是良喂养樱花第2集| Ally Mac Tyana| 金瓶徐少强未删减版免费| 时来运转国语高清| 女人村庄演员表| 歌后逆袭歌坛:我称王短剧全集| 法国电影《女流氓》的剧情简介| flypaper苍蝇陷阱| 《屋顶工》拉拉在线观看 | 莉娜安德森《满天星》电影在线观看 | 冬之蝉动漫免费全集观看| 妻子的诱惑电视剧| 法国巜监狱伦理3| 高清《未成年》电视剧免费观看| 我是mt第三季| 我的大胸继拇4| 茶啊二中电影免费观看完整版高清| 电视剧楚留香传奇| 激战丛林3女兵免费观看高清 | 泰安华通集团最近消息| 男人女人一愁愁愁电视剧| 文豪野犬第三季免费观看| 妈妈爱上儿子的同学韩国电影 | 花子vs倔强驱魔师动漫在线观看全集 | 法国空乘伦理4| 我爱发明越野车| 欲望酒店 百度影音| 星汉灿烂电视剧全集| 黑配白在线观看| 甄嬛传电视剧免费版全集在线| 风流小神仙| 陪讨厌部长去出差旅在线| 漠风吟电视剧在线观看完整版免费| 电视连续剧锅哥警察| 楚留香之采花大盗| 狼行天下之钦差| 尼基塔第二季全集| 年轻的小廋子| 贪婪欲望之岛无删减版观看| 《恐龙岛》电影| ⅩL司令全集| 男子私藏枪支家中宛如“军火库”| 为歌而赞| 女超人麦乐迪在线播放完整版电影 | 中国媳妇主题曲| 琉璃全集| 让爱重来| 满天星版《荒岛女儿国》| 银河护卫队 字幕| 高清有罪之身| 女飞行员(法国)满天星女版2011在线观看 | 《图书馆的女友》1-6集结局| 星汉灿烂免费观看全集| 免费观看爱我几何| 年轻的母亲在线观看中文版完整版| 《教室里的秘密》结局| 火柴人格斗动画| 《成何体统》| 一年恋一天| 安姨满天星版全集免费播放| 赤裸的美奈子| 魔境仙踪快播| 母亲穿睡衣遇见儿子同学电影| 滚滚红尘 罗大佑| 养个妹妹做老婆| 老表你好嘢国语| 祝英台与梁山伯的电视剧| 善良的老师3完有限中字木瓜| 高清《我的个神啊》| 《维修工》电影王李丹妮在线观看 | 妖精的尾巴53| 性生活全集| 变形金刚起源普通话| 电视剧女婿难当| 《妻子与游泳教练》主演| 我的老婆最美| 夏目彩春的| 成全动漫观看免费高清动漫| 和尚的一场春梦完整版| 杏林春暖无删减| 爱情有奇迹| 韩国女主叫梅川,丈夫叫小帅的电影 | 妻子6免费完整高清中文版电视剧| 暴走财神5在线观看免费完整版 | 虐恋情深全集免费| 清潭国际高中第一部| 白宫陷落2惊天危机| 张警官第三部免费播放| 前任攻略4| 高校教师成熟在线播放视频| 小凤新婚下集在线播放最| 五十度飞| 极乐电影网| 吴雪雯性迷宫未删减版| 《爆乳女教师 高清BD》在线| 校草追求:学霸女神全集免费| 麻辣变形计2| 女超人无删减版| 王的女人下载mp4| 娘家的故事爱的重生| 被凌辱的妻子在线观看| 莫言被踢出作协| 一屋老友记 国语| 伊波拉病毒2普通话国语| 高清《密爱》2002韩国电影| 旋转的爱中文版| 电视剧南下| 麦迪乐在线| 猛鬼村电影完整版免费观看| 电视剧烈火| 冷艳女特工完整版| 戍天伏魔录| 食尚玩家| 暗黑森林满天星版美国| 胭脂雪电视剧| 锡剧珍珠塔全集| 猫鼠游戏电影| 黑白配高清完整版在线观看| 老公不在时动漫第二季的剧情介绍| 足球小将粤语版全集| 法国高压监控完整版| 吸血鬼生活| 欧美灭火宝贝在线观看完整版| 2.5次元的疑惑| 《炸天小姐》在线| 唔黐线唔正常| 卧底2电视剧免费观看全集| 21世纪爱情指南完整版全集| 伦敦沦陷| 巜电车痴汉玩弄人妻HD| 酋长的女儿红辣椒| 丹麦娇娃| 爱情心心相印电视剧免费观看| 古惑仔5龙争虎斗国语字幕| 《上门服务》菲律宾主演是谁| 追凶者也 电影| 地球上的爱人| 放开爱mv| 杨敏思版1-5集免费观看| 许念念电视剧全集免费观看| 楼上楼下1V2| 天海翼女教师在线观看| 华丽上班族粤语| 埃洛伊塞| 酒店激战第一季1-5集| 后果电影在线完整版| 《娜塔莎》电影在线观看| 张艺谋电影满江红在线| xl司令的动漫全集免费观看网站| 伪装者电视剧全集免费观看| 单身女王| 留坝县| 女超人麦乐迪在线完整版2013| 蜜桃熟了| 蒙古草原 天气晴| 美发店的待遇2| 上海电视台直播| 长津湖2021在线观看| 天国的阶梯演员表介绍| 进击的巨人最终章| 扫黑风暴免费播放观看| 左宗棠电视剧20集全集免费观看| 墨西哥瓜达卢佩的玫瑰完整版| 盲侠大律师2020在线观看| 满清十三皇朝之血染紫禁城| 《柳舟记》电视剧| 三级《出差被同房》| 危情谍战在线观看完整免费高清| 《误杀3》大结局| 无为县| 王多余打扑克视频| 男与女完整版电视剧| 山村机缘:下乡弃少短剧全集| 站着再来一次第26集免费播放| 火影忍者mp4| 最后的格格全集| 大河儿女 电视剧| 千灭天际线| 乱世豪情电视剧| 真心英雄之现场| 金银悔1一5集免费观看| 阳阳电影| 闪婚顶流全集免费| 地道战全集| 天海翼护士在线| 僵尸道长第一部国语高清全集| 泰剧国语版全集| 安庆市| 卢旺达的玫瑰在线观看| 小公主苏菲亚国语版| 新少林五祖电影| 动感之星之妖精168集全集| 《芸汐传》全集观看| 中国教育考试网官网登录入口| 第二陷阱| 2008徐少强在线观看完整版| 逃亡者planb| 《你的孩子不是你的孩子》| 爱我几何原版完整版| 电视剧明天我不是羔羊| 24世纪性格爱情指南| 大胸电影| 一起来看流星雨12| 电影爱的躯壳| 《销售秘密》3| 大耳朵图图3部全集| 八戒八戒10在线看免费观看完整版 | 为我而眠的妹妹 | 狂飙风暴免费看全集| 台湾电影卖房的女肖信| 凶灵假期| 戒爱电影在线观看完整版免费| 皖乡食妹| 大电影赛尔号| 黛比浪漫女教案全集 | 密爱:我朋友的妈妈2 电影| 叔母的爱电影免费观看完整版| 搬山道人免费观看完整版| 鱼跃在冬季国语| 男生和女生一起愁愁愁电视剧全集| 美国《粉红大白菜》剧情介绍| 《开放少女2》免费观看| 河南曲剧卷席筒| 翁虹所有电影| 铃木杏里ed2k| 美国电影荷尔蒙6免费| 奇门偃甲师电影免费的| 等一个晴天说再见| 装台免费版在线观看| 瓜达卢佩的玫瑰电影在线看免费版| 海霞免费| 法国电影空乘2完整版在线观看中文字幕 | 荣誉之战满天星在线播放 | 小凤新婚电影手机在线免费观看 | 美国电影《飘》免费观看中文| 兽皇电影在线观看完整版| 骚女视频| 高清《求佛》po| 好特电影| 《玛丽玛丽》满天星中文 | 灵魂摆渡第三季全集免费观看| 叔嫂恋2之血恋免费普通话| 曼谷保镖1国语| 牙医姊妹电影| 一起再看流星雨1| 七号差馆国语| site:www.yalan365.com| 高清《美景之屋1》| 插曲的痛90集全集观看| 朋友的妈妈2020中字| 25岁的女高学生无删樱花| 米老鼠和唐老鸭国语全集| 交换玩弄两个美妇教师韩国电影 | 未来的儿子全集观看| 《淋漓尽致3》| 嘿!孩子 电视剧| 三年成全免费观看高清在线播放| 绮梦游戏| 玩命派对| 我老公的家庭教师在线观看| 美容院的待遇服务在线观看| 偷香在线观看完整版高清中文| 生死狙击百度影音| 什么是常任理事国| 《入室暴行3被蹂躏高潮电影| 海战棋2| 公民凯恩电影| 海洋奇缘| 《饥渴的女人和维修工在线电影 | 黑话律师一共多少集| 黛比| 金刚大战哥斯拉3免费完整版| 国家命脉| 犹及清明可到家的上一句是什么| 韩国电影美容店的特别待遇 | 真爱趁现在全集百度影音| 惊声尖笑1免费完整版高清| 白峰电影观看| 高清《天意》电视剧在线播放| 大秦赋在线观看免费完整版| 爱上黑道女友完整版| 坎贝奇完整版| 全职高手免费樱花动漫| 灌篮高手特别篇| 从化龙卷风| 丰满的女人电影在线观看| 激情燃烧的岁月主题曲| 千金丫鬟电视剧在线观看完整版| 杨思敏版金瓶梅| 姐姐的男友2字id| 王牌特工2:黄金圈| 阿ben 长发妹| 雪鹰领主40集在线观看| 女友的妈妈字ID| 深宅1927 电视剧| 暗夜深海电视剧免费播放在线观看| 打雀英雄传| 周弘| 妻子的秘密韩国电视剧| 电梯故障2| 哈利波特| 种马猎人美国1982| 斗罗大陆在线观看全集免费| 另一个贝内特家的姐妹未删减| 核弹总动员| 水润女人刘志贤最火的几部电影作品 | 百度战曲| 萌学园5异界对决20| 法国高压监狱1完整版| 凌晨两点半| 盖世英雄方世玉电影| 隋唐演义电视剧免费观看| 脱逃狱者天海冀电影高清在线观看| 漂亮姨太太电视剧| 电视剧《雪迷宫》32集播放| 傲斗凌天v20| 禁锢之地电影| 谈判专家在线观看| 黄鼠狼迷人| 电影《法国空姐2》| 蜀中桃子姐| 我的不良义姐动漫第2集免费| 轧戏电视剧演员表| 小时代3:刺金时代 电影| 电视剧大地恩情| 母亲穿睡衣遇见儿子同学电影| 太极张三丰电影下载| 双面娇娃| 我的自由年代4| 《天海翼和部长一起去出差旅》| 爱到永远 谢雨欣| 儿女传奇之闹婚记| 盯住你不放| xl司令第一季全集在线观看漫画| 这个大叔不太囧 电影| 食人神之山在线观看完整版| 密爱韩剧电影版翻译成中文| 坎贝奇三部曲《品味人生》完整版 | 百炼成神第三季在线观看完整版| 让媳妇变成花痴2电视剧叫什么名字啊| 浴火之路 电影| 三分野电视剧西瓜免费观看全集 | 荣誉守则翻拍版成人版| 龙日一 你死定了2| 年少日记| 男生和女生一起愁愁愁电视剧全集双| 高清《捉奸侦探》电影| 活佛济公三全集| 余男 三级| 农民伯伯2第二部国语版| 卖保险的女销售2| 爱即所求电影| 花花公子电子杂志| 陪讨厌部长去出差旅| 韩剧办公室蓝色隐身帽子动漫 | 女人不在沉默电视剧全集在线观看| 被义子侵犯的日子| 九月风暴下载| 与讨厌的部长一起去出差旅的电影| 酒巷深深| 公之浮手中字在线观看完电影 | 神印王座动漫免费完整版观看| 《大明王朝1566》电视剧| 爱情公寓3 在线| 女超人无删减版| 罗马欲乐园| 棍勇的回复术士全集免费观看| 出包女王| 当男孩遇见男孩| 张柏芝的不雅照片| 菲律宾电影《私人教练》的创作背景| 月光王子| 女神蒙上眼| 《交换夫婦》木下凛凛子| 艾薇儿最新mv| 电视剧智者无敌| 日本战狼6免费完整版| 杨钰莹 遇江南| 《倩女幽魂》电视剧| 阿坝县| 明日香クレア| 目之所及| 无悔追踪电视剧高清免费观看| 在线观看瓜达卢佩的玫瑰| 暗之末裔高清| 《卷卷初恋》| 三年电影免费观看国语版播放| 巜出轨上司的人妻2中字| 侏罗纪公园 2013 电影| 意大利八尺夫人完整版英文版| 局长太大太粗进不去| 楠木邸的神明庭院| 灰姑娘啄木鸟满天星版| 犯罪娇妻在线电视剧免费观看中文版| 嘘 国王在冬眠| 女超人麦乐迪无删减版在线 | 地下城与西游记全集| 星辰变第二季免费完整版| 麦乐蒂女超人| 小鞋子电影| 夜的第七章短剧| 任宏恩哭坟| 法国版《古墓丽影》在线播放| 《屋顶工》拉拉在线观看| 脔到她哭H粗话H好爽五星视频| 王子变青蛙第二部01| 不会恋爱的我们| 《overflower》真人版| 三佳购物网上商城| 上海卫视六个主持人参加生日宴| 八妻子影秋在线| 中字HD丈夫的下属中字| 美味快递2中文版| 青梅竹马是消防员未增删E站| JIZZ学生妺| 电锯惊魂6高清版| 美国《爱上儿子》电影| 《边城汉子》| 八佰 电影| 最新电视剧排行| 异形夺命舰免费观看中文版| 图书馆的女朋友免费动漫高清电视剧动漫第五集无广告 | 印度女子监狱满天星| 原谅电视剧| 张学友什么歌好听| 公主日记1免费观看完整版英语| 《修理工的艳遇日本电影| 妽妽洗澡我被弄硬了在线观看| 百变校巴全集免费观看| 机动警察全集| 《逆袭之爱上情敌》电视剧| 欧式少女第16集全集剧情介绍| 与僧侣的色欲之夜漫画| 夏至未至豆瓣| 诚实好媳妇韩语中文谐音| 女超人麦乐迪在线| 我义姐是不是良义母电影名字| 烟火人家40集免费观看| 空姐3免费高清完整版| 新常态电影| 壮志凌云2011满天星| 法国色情巜野性无蚂| 犬夜叉国语全集下载| 童话村最新电影| 法国电影法国空姐4| 原来她很甜1v2| 木府风云主题曲净土| 财神有道电视剧| 《偷天鉴宝》叶子楣全集| 无可替代泰剧| 怪医文三块高清全集| 家门的荣光分集介绍| 晚安为我而眠的妹妹| 《驯服小峓子》中字板在线观看 | 咱们结婚吧全集免费观看| 花木兰 高清| 男女生一起愁愁视频| 不知羞耻| 天使猎人| 喜剧之王周星驰国语| 甜蜜罚罪第二季真人版无打马赛免费| 妻子被强奸电影| 青春四十电视剧| 星辰变超前点播| 大红包电影免费完整版| 洪真英BD三级在线观看| 经营婚姻电视剧全集| 十二生肖快乐街全集| 渗透全集| 学校怪谈 动漫| 倔强的驱魔师动漫在线观看完整版免费高清 | 韩剧《白夜行》| 麦乐迪版女超人| 末日狂花钱电影在线观看免费高清| 冰雪之名电视剧免费观看| 湖滨花园酒店| 人生如戏全集大结局| 战狼六| 亲爱的姐姐1在线观看完整版| 伍佰在苏州演唱会累惨了| 短剧《萌孙出击》免费播放| 上错花轿嫁对郎免费全集在线播放 | 间谍过家家第三季免费观看| 硫磺岛战役电影| xl司令第一季全集免费观看| 惩罚女兵洗澡影院| 余罪全56集| 《欢乐颂3》电视剧| 微微一笑很倾城30集全集| 女版战狼6免费播放| 青春四十电视剧| 武林外传电影版快播| 小凤新婚电影手机在线免费观看| 知否电视剧| 大清十二刑| 韩国三级水电工 | 斯巴达A片成人版| 大风杀电影在线观看完整版| 假面骑士decade主题曲| 为什么叫小李子| overflower完整版| 青梅竹马是消防员风车| 美味的交换| 台湾师生恋《补课》电影是什么电影| 女超人无删减版| 韩国18禁电影风暴尺度大| 梦回青河| 电影《巴黎女流氓》免费观看| 战神归来:守护妻女全集免费| 快播韩国电影| 恋爱超男女| 美国式家庭忌讳1-| 非洲黑人噼里啪啦视频免费看…| 《黑白禁区》电视剧全集| 好久不见电视剧在线观看免费完整版| 新金梅瓶1至5集完整版| 法国空姐4电影| 京胡大赛| 大地5资源在线观看高清国语版| 逃跑的女孩完整版| 麦乐迪《女超人》电影| 柏原崇电视剧| 鹰巢之预备警官| 《特殊的汽车销售》剧情介绍| 垂直打击电视剧完整版免费观看| 整蛊专家3| 西施电视剧| 白峰电影高清在线观看| 马斯顿教授与神奇女侠| 王凯和蒋欣真的要结婚了吗| 凹凸世界动漫| 赌王之王重出江湖| 歼灭天际线免费完整版在线观看| 两个女人的房间韩剧| 太空堡垒卡拉狄加| 绝对臣服短剧免费观看全集高清| 夫妇联欢会回不去的夜晚9集 | 评书田连元| 激光去斑会留疤吗| 美国电影大全免费观看高清完整版| 霍比特人1在线观看| 《房奴试爱》截取了一段开头原声| 电视剧天梯| 隐形战队国语电视剧免费观看| 米奇妙妙屋之大搜寻| 忽略阅读答案| 年轻丰满的继牳3伦A片201| 美味的邂逅| 大笑江湖优酷| 幻影忍者动画片| 怎么办家康在线观看| 电影我的兄弟姐妹| 9518虚拟视频| 被义子侵犯的继拇电影| 新乱世佳人电影完整版| 制服的诱惑地下法庭| 仙帝弃少:凡人皆俯首全集免费 | 使徒行者1电影版国语| 金牌销售秘密3HD中字| 命运之夜天之杯| 大街上强?在线观看| 金瓶少女电影在线观看完整版免费| 木子檀檀子剧免费观看第10集| 新金瓶酶2| 我是刑警38集| 假面骑士铠武15| 蛇姬恋电影高清完整版| xl司令38集在线观看| 朱孝天版楚留香传奇| 一代匠师 电视剧免费观看| 康熙微服私访记第二部| 闯关东高清| 巨茎挺进李淑芬视频-高清电影电影未| 万能阿曼| 韩国为了皇帝| 禁止的爱善良的小蛦子 在钱| 《长津湖》免费观看完整版高清| 欧式少女19集视频大全| 钻石王牌 第四季| 电影《度娘》免费观看| 王楚钦张本智比赛视频| 春节联欢晚会2024| 公之浮中字2023最新版| 部长出差的日子在线看| 花非花雾非雾电视剧 全集| 画皮之阴阳法王完整版免费观看| 《妻子10》免费高清电视剧| 三姐妹瑜伽健身完整版视频 | 高清《向魔王伊布罗贾献身吧》| 哭泣女人的诅咒| 鬼灭之刃锻刀村篇| 天赋异禀在线观看免费| 爸爸播种电影免费观看高清版 | 星际迷航之复仇女神| omoflow第一季真人中语| 武林风六国拳王争霸赛| 画皮2 bt| 年轻的阿姨| 越狱第一季国语版| 邻家女人丈夫不在的日子结局| 美国禁忌睫毛膏高清版汉字| 电影便衣警察| 艾曼纽非洲之旅| 《满天星绝版》在线观看| 僧侣走肾1-12未删减| 韩剧《家庭教师》免费观看全集| 感官之旅| 防城港市| 《女仆庄园满天星免费版》| 桃花小妹2| 鬼灭之刃第二季11集免费| 嫁给西北糙汉子的小说爱情| 肖战杨紫在线观看免费| 《特邀外卖员》完整版| 陈宝莲电影《满天星》| 沙琪玛妈妈吃蜡瓶糖冰| 西班牙肉体之罪未删减版| 凶宅专卖店| 寒门弃少:靠医术震彻京城短剧全集| 开国大典电影完整版| 韩剧电视剧大全免费观看| 《村枝》雨晴版| 完美邻居| 景区再度上演人从众| 电影邻居完整版| 八十八佛忏悔文唱诵| 逃犯入室暴行电影免费播放 | 一战再战全集观看| 姨母的诱惑免费在线观看| 肉蒲团之夜销魂 贵妃| 丽卡《驯服2》电影完整版| 被按摩师摸到高潮A片| 幻影英雄| 聊斋在线| 小姑子的味道3韩剧免费中文| 古代种田全集免费| 《部长来家》电影| 替夫还债3高清完整版在线观看| 妹妹学着点:打脸绿茶全集免费| 明星童乐会范雷| 爱情公寓盗墓笔记| 3D动漫18MMD在线观看| 女超人-麦乐迪版| XL上司令第一季02集免费观看最新一期 | 白看电视| 同桌100网| 庆余年手机在线观看| 灿烂的海棠花4| 酒店激战第1-5集免费观看| 邻居漂亮的妻子5| 那金花和她的女婿46| 人世间在线观看免费完整版高清| 火口的两人完整版电视剧去模糊| 《Overflower》动漫全集免费观看第| 电影《毒医肥尸》| 《自由的她们》完整版免费观看| 张译《狂飙》热播后首露面| 儿童歌曲快乐的节日| 凌云壮志(法国)满天星电影免费观看 | 电影我有钱了在线观看完整视频| 《民国奇探》免费观看| 绝命毒师在线观看| 需要爸爸播种在线观看免费高清完整泰剧 | 《爱欲告白》韩国电影免费播放| 《潜入搜藏官绝对不会输》也好看| 终结者:创世纪 电影| 亲爱的妈妈BD高清| 战狼999在线观看免费版高清| 招待外卖员电影| 耙怎么读| 一夜新娘第二季全集免费观看| 电视剧胭脂| 步步惊心八阿哥| 青春期主演| 黑白配高清在线免费观看| 四喜一共多少集| 魔法老师第一季| 走向共和哪里可以看| 韩国电影空姐| 宋慈韶华录电视剧免费观看| 鬼吹灯之天星术日语| xl号司令动漫全集免费在线观看| 父母的爱情| 海贼王剧场版第10弹| 高清《鬼父上卷》1| 三个傻子| 禁忌5在线观看| 沙漠行动满天星版免费观看| 最年轻的小妻子| 横空出世电影| 雪恋电影完整版免费观看| 剑来第一季免费观看完整版动漫| 铁齿铜牙纪晓岚2| 凤凰台上电视剧全集免费观看| 和讨厌部长一起去出差旅| 美乃雀所有影片免费观看| 妖精的尾巴全集| 高清《天气之子》电影免费看| 阿嬷爱国版歌曲| 速度与激情8免费在线观看| 战狼9欧式少女在线观看全集高清美国 | 可爱的妹妹| 奇思妙想周莹博士王俊凯| 闪婚顶流:爱豆是我老公短剧全集| 美国黑白配在线观看免费| rbd505| 神代弓子| 第一次爱的人第6集免费观看| 女女电影免费观看完整版大结局| 兄弟战争ova| 潼南县| 讨厌部长 出差HD中字_午夜电影全集_完整版免费在线观看-天天影院 | 东北插班生免费观看全集| 蝶舞天涯百度影音| 菲律宾《房产销售》| 大丫鬟主题曲| 我在他乡挺好的更新时间| 花样女鬼|