<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

          主站蜘蛛池模板: 酒店1—100集免费观| 电视剧光荣岁月| 姐妹牙医观看| 庆余年免费手机全集在线观看| 法国空乘2016无删减版在线| 绣春刀电影在线观看| 警察锅哥第二季免费观看| 19岁免费观看国语版| 高清良药苦口 第一季未删减| 死神来了5免费观看完整版| 斗罗大陆208集免费观看完整版| 电影《香醇的绣感》演员名单 | 妈妈屈身儿子同学,为救儿子,嫁给同学| 尖叫之夜免费观看2023年电影| 壮志凌云女版伦理片| 加百列的地狱| 五月天交换小说| 斗龙战士60集| 我们在黑夜中相拥电视剧免费观看| 渔女实战2免费观看正版| 养母的花样年华演员表| 爱情的牙齿| 马成的喜悦| 挠痒痒脚心痒痒| 花开山乡电视剧免费观看完整版 | 丛林战争| 麦迪逊河谷 第一季未删减| 《欺诈游戏》| 做aj的电视剧大全免费观看一天多少钱| 军刺电视剧全集优酷| 特邀外卖员在线| 新妈妈手机在线观看| 血战摩苏尔| 壮志凌云满天星女版免费在线观看| 冬至黄景瑜免费观看版| 爱情真善美40| 凯帕克在线观看| 追虎擒龙粤语观看完整版| 两世欢免费观看全集| 春雨在线观看全集高清免费播放| 全缉毒狂潮| 垚怎么读| 我的妻子和女儿| xl司令第一季全集免费观看在线播放 | 战狼10国语免费观看影视| 荒岛女儿国美版| 智取威虎山电影完整版| 《替夫还债3》剧免费观看| 沧元图55| 即墨市| 守护解放西第三季在线观看| 女生男生一起愁愁愁电视剧在线观看全集视频 | 风味人间5| 男人和女人一愁愁愁电视剧在线观op| 原来我很爱你电视剧免费观看| 步步紧逼电视剧免费观看全集| 姐妹牙医电影在线观看| 狐妖小红娘无暮篇免费观看| 女军医满天星在线观看完整版| 电影黑豹天下| 电视剧《雪豹》全集免费| 飘雪厨房激战| 宝宝巴士小苹果| 金瓶梅免费观看| 壮志凌云1(法国)满天星法版免费完整| 女生按摩胸部电影免费观看| 爱的烹饪法国语版| HD版《激战丛林》完整农厂主和女儿 | 一路向西女演员| 学生妈妈的ID| 《庆余年2》第86集| 卢靖姗顺产36小时生下女儿| 日本战狼6免费| 宝丽金25周年演唱会| 斗罗大陆160集在线观看完整版| 刘智贤《水润人生》免费看| 电视剧白发魔女| 就算是爸爸也想做免费观看| 电影《双女任务》| 第一韩剧网| 睡在我上铺的兄弟下载| 女战狼6免费高清版| 幸福演算法全集观看韩剧| 进度条 英文| 哇嘎高清完整视| 天涯海阁成人网| 速度与激情9在线观看免费完整版| 秋瓷炫生死决断在线观看| 两个人的寂寞| 风起洛阳电视剧免费观看| 男人和女人愁愁愁电视剧免费| 姐妹奴厉| 顶级人生第一季电视剧| 《爱我几何》高清免费看| 大胸av| 韶华若锦全集在线观看| 花子vs倔强驱魔师| 云雨影院电视剧全集在线观看| 笹原りむ| 凌云志(法国)满天星| 倾城电影| 赵晓讲道| 电影画皮| 战狼9欧式少女办| 瞄准全集免费观看| 哇嘎嘎电影播放免费观看| 娘亲舅大电视剧| 铠甲勇士刑天29| 女超人麦乐迪未删减版| 窃听风云3免费| 母亲5免费完整版全集电视剧| 牙医姐妹在线电影播放完整版| 流星花园高清版| sis001邀请码| 1995年意大利版《人猿泰山》高清版| 新上门女婿手机免费观看| 藏不住偷偷喜欢你电视剧| 兄弟老婆| 新妓生传韩剧| 小鲤鱼跳龙门电影| 韩剧女友的母亲双字ID| 我的三个姐姐大结局| 高清《突然的喜欢》电视剧| 神木丽急诊待遇2电影完整版| 百变神龙| 地狱宝贝| 梅丽莎的满天星三部曲| 电视剧狂飙免费观看| 那年花开月正圆迅雷下载| 武藤兰 下载| 82杨敏思1-5电视剧免费观看| 高压监狱2免费完整版在线播放| 《爱的方程式》动漫免费观看| 酒店1—60集全集免费观看高清| 《渗透》电视剧全集免费播放| 僵尸归来4:阿修罗之泪电影| 安姨在线| 邪恶之吻| 隐身女侠的电影免费观看| 不戴胸罩叫邻居修灯泡| 黑铁的鱼影免费完整版现场版| 阿桑葬礼| xxxx69美国| 武林志电影| 定格动画制作教程| 插曲的痛| 霍元甲电视剧1983老版| 非礼勿视2| 大叔小馆第1季完整版| 俘虏之锁在线观看完整版| 立体文眉| 哪里逃1VLH| 法国肉寇之香| 追光的日子30集免费观看| 我是特种兵第二部全集| 香港桃色凶器| 绿茵巨星| 农场主和他的女儿们电视剧完整版| 法国监狱高压2在线观看完整| 猫眼三姐妹中文版全集| 一泊二日| 战狼6在线观看完整免费| 电视剧觉醒年代| 驾驶员找工作| 俘虏之锁| 白百合出轨| 非常秘书飞速中文网| 神龙归位什么意思| 法国兄妹开荒原版免费看| 在夫面前被强行侵犯的人妻| 韩剧我愿意国语版| 电影轮换2免费版| 李娜的歌曲| 断魂小丑3正片免费观看| 女员工的付出中字马少杰| 怒火重案高清免费观看| 米兰大坏蛋1分47秒| 黑白配高清完整版在线观看大潘小品好感/| 电视剧悬崖全集| 天堂有难| 坎贝奇无憾全集码名| 精武门 李小龙| 警探迷案| 动感小站之星妖精169集| 所有邪佞之人免费完整版| 两公升的浮手中字| 海狼行动| 哭悲医院五人干了啥| 养鬼吃人10| 特邀外卖员电影免费在线| 春情荡漾| 降魔的国语| 村上沙兽皇电影2023最新版更新 | 如果声音不记得免费观看完整版| 爱我几何完整版免费观看 | 电影《一步之遥》在线播放| 潘展乐从第7追到了第2| 男生女生嗟磋嗟磋磋| 二胡美女谁最漂亮| 一路向西在线观看完整| 维修工的老艳遇在线观看| 在你床下| 正义无限电视剧| 爱我几何《莫妮卡》电影完整版在线 | 别墅轮换1攻略完整版正版| 天使多美丽| 警花交换做爱| 白夜破晓在线观看免费高清版| 舔B拨弄深入抽插上司| 罗宾汉2010版电影| 我们都是超能力者完整版电影| 《周四推理俱乐部》| 相爱概率论泰剧免费观看| 爱情有点蓝歌曲| 《新人类之毒医肥尸2》在线播放 变形金刚7国语HD免费完整版80 | 米尼的第一次| 金瓶梅 高清完整版下载| 韩国金牌销售| 我在未来等你在线观看免费完整版| 魅魔猎人在线观看免费完整版| 日剧《卖房子的女人》| 真相电视剧在线观看完整版免费| 酒店激战第1-5集免费观看李丽珍| 圣山村谜局电影完整版在线观看| 你的欲梦裸身在线播放| 我们都是坏孩子电影| 交换上司的秘书电影在线观看 | 蒙古草原天气晴| 伦理《法国护士长》2006在线| 扫黑风暴25集| 情深深雨蒙蒙全集高清| 妻子8免费完整高清HD| 迷离时空免费观看| 潮与虎粤语| 满天星《炎热的家庭》播放| 我的妈妈是校花电视剧| 欲望的火花免费观看完整版| 别墅轮换1攻略| 釜山行2正片观看| 普京呼吁纳卡停火| HD版《激战丛林》完整版播放| 电影偷窥狂人| 她来自胡志明市电影| 瑜伽老师在线观看电视剧免费| 锦衣之下全集免费高清| 泽塔奥特曼第十集| 墨西哥《瓜达卢佩玫瑰》 | 有人干睡过劳荣枝 | 打黑电视剧免费观看| 紫川电视剧| 黑白配高清中文在线观看全集免费| 武动乾坤动漫第二季| 免费观看回复术师的重启人生| 一一 电影| 三级维修工的艳遇| 前进巴格达| 杀死汝爱 下载| 日本混血女大学生精油按摩三位混血女大学生BDHD| 回复术士的重来人生观看| 宋雨琦镜头表现力好绝| 张翰不一样的美男子| 微微一笑很倾城电影| 儿子的妻子8免费观看电视剧| 电影《私人航空》在线观看 | 房产销售的秘密韩国在线观看免费| 牧野诡事之卸岭力士| 《希望的大地》电视剧| 激战后厨1至5外出| 意大利空乘4美版| 伦理厨房的岳 BD神马在线观看 | 瓜达卢佩的玫瑰(原版)在线观看 | 北上电视剧13| 兔子帮19| 台剧浪漫女家教免费观看第14集| 猪猪侠超级棒棒糖| 阿神的实况教室| 二十一世纪爱情指南欧美| 鸣鸟不飞动漫| 蓝宝石之谜| 《初恋时间》1-6免费观看全集| 《给十九岁的我》获金像奖最佳电影| 圆桌骑士rom| 全力以赴的行动派综艺免费观看 | 御龙修仙传2魔兽疆界| 一线生机 电影| 老河口市| 八仙饭店埃博拉病毒| 平凡的世界电视剧全集| 奇门遁甲2免费观看高清完整版| 韩国小电影男子获得遥控器控制女领导 | 父子 电影| 米尼的第一次| 杭锦后旗| 《特殊的保险推销员》| 路灯下的小姑娘广场舞| 农村丫头高清免费播放电视剧| 坎贝奇影片在线观看| 余炜南昌| 张艺兴诉b站侵权案将开庭| 《女军医》满天星免费观看| 日韩r| 阿远食味| 歌声飘过30年百首金曲演唱会下载| 法国电影《金牌销售》在线播放| 李贞贤换男人| 第二次人生电视剧免费播放| 公主她不装了:摊牌是大佬短剧全集| 白峰在线观看免费版电视剧 | 核弹危机| 斯巴达克斯第5季第10集下载| 《不忠》楼道分手原声片段爱奇艺视 | 酒店1-100集| 王凯和蒋欣真的要结婚了吗| 黑帮大佬和我的365日在线观看| 黑白配1080完整版在线观看| 重生八零:俏媳妇致富经全集免费 | 妻子的姐姐2免费观看电视剧 | 闸北区| 坎贝奇《无憾》电影播放| 韩剧我的妻子| 杰西卡·琼斯| 暴躁46集全集免费观看| 婬荡的寡妇播放| 印度人看中国高铁| 我的傻妞妞| 邝美云大悲咒歌词| 替夫还债中文电影版在线观看| 我是传奇第三期| 渔夫荒野| 年轻的嫂2| 《女律师替夫还债》韩剧| 高清只是朋友2:梦想天开未删减| 电视剧武则天全集| 美人吟电影未删减版免费观看| 满天星父亲的秘书马莉萨卡| 世界大力士争霸赛| 孙红雷一代枭雄电视剧| 《维修工人的艳遇》1| 沉睡花园电视剧免费观看| 娘家的故事之爱的奉献 | 又见一帘幽梦吻戏| 隋唐英雄120集| 叶倩文三级大尺度电影| 玉女聊斋电影全集| 日本金银1-5普通话| 大地8中文在线观看免费高清成全 禁止的爱 免费观看 百度百度 | 天后手册短剧免费观看| 十项舞蹈全集观看| yellow视频在线观看| 梦魇绝镇| 紫钗奇缘电视剧全集| 卖房子的女销售2| 超级老师3免费全集| 《混凝土市场》| 纯真时代几分做了| 瓜达卢佩的玫瑰免费播放| 湖南卫视中秋晚会2021节目单| 腹黑总裁:只对我温柔全集免费| 没有工作的一年| 丰满的继牳3小早川怜子bd电影| 朋友夫妇交换陈诗雅| 高清《杀戮天使》免费观看| 亡命英伦| 艳情电影邻居的阿姨| 年轻丰满的继牳2| 爱情公寓3下载mp4| 维修人员的培训 在线 | 产妇大出血院长深夜跨院摇人| ⅩL司令全集完整版免费观看| 汉尼拔第四集| 大鱼海棠| 韩国电影十八禁顶楼的大象在线播放| 《美容院5:特殊待遇》| 三d肉蒲完整版| 王保长歪传高清| 后宫动漫免费全集观看完整版 | 火影忍者疾风传383| 大考免费观看完整版电视剧| 非凡医者电视剧免费观看| 哇嘎电影免费观看高清国语 | 《僵尸叔叔》国语版免费观看| 24世纪性格爱情| 精锐部队1| 启示录在线观看免费完整版高清| 春风定风波全集免费播放在线观看| 《贝拉8》在线观看| 高清《白蛇:缘起》免费观看| 以家人之名更新| 火口子的两人| 插曲的痛30集全在线观看播放| 赛车总动员全集| 高清《地狱来的芳邻》电视剧| 灵与肉电影| 马蒂达尔梅满天星| 《有罪之身》| 电视剧猎场| 旌德县| 暴躁46集正版在线观看| 跟踪电影| 广场舞光阴的故事| 盛唐风流电影高清版| 俄罗斯版女儿国2哪里能看| 360大佬爱上我免费观看| 寒战2迅雷高清下载| 麦子交换3| 最后的大魔王6| 秘书在办公室被躁BD在线小说| 韩剧《大家庭》免费观看| 插曲痛全集免费观看| 冯巩全集| 我的爱宥丽| 肉蒲团之夜销魂 贵妃| 美国满天星《无法无天》| 《釜山行2》电影观看| 国术无双| 闪耀吧中华文明| 爱有几何莫妮卡免费观看完整版| 点燃你温暖我| 王者之风| 传闻中的七公主国语版全集高清| 女超人麦乐迪无| 晚上睡不着看的免费| 斗罗大陆免费完整观看209| 现在就出发| 歌手当打之年第六期| 高中(hsc1v1)校园宿舍| 傅玄屹魏语娴全文免费结局| 刘嘉玲原谅绑匪| 变成黑皮辣妹后和朋友做了未删减| 超感迷宫在线观看电视剧| 需要爸爸播种在线观看免费| 万千星辉贺台庆46周年| 高清《老少恋》电影免费观看| 地下美人电影完整版| 《美容院1:特殊待遇》在线观看| 新白发魔女转| 一酷到底| 电视剧勇敢的心全集| 日本电影《牙医姐妹》完整版在线观看| 八年级下册英语单词领读| 周香允的《外卖奇遇》| 奔跑吧兄弟黄河篇免费观看| 高清96分钟:列车爆炸案未删减| 盖欧扎克| 巾帼枭雄义海豪情| 坎贝奇无憾人生完整版| 因为爱情有幸福之一电视剧| 相爱十年 电视剧| 伊比利亚三部曲在线观看| 摩登原始人英语| 小女花不弃电视剧免费播放| 《爱的色放》| 美国女按摩师2无删减版电影观看 HD版泰山《激战丛林》完整版免费免费 | 站着再来一次第26| 看不见的朋友| 北越暴行1-12集免费看| 潜伏全集| 残奥会主题曲| 《催眠软件》动漫第一季| 特殊的保险销售员2| 绝命休息站| 地心游记2在线观看| 亲爱的爸妈电视剧免费观看完整版| 飞翔女孩满天星免费播放| 法国空乘电影观看免费视频:| 何赛飞获金鸡奖最佳女主角| 你比星光美丽电视剧免费观看最新| 罗曼蒂克未测减除版CK| 未删减版瓜达卢佩的玫瑰在线观看免费| けんじゃたいむ八重神子| 点燃我温暖你更新时间| 克罗斯凯登电影合集| 上司趁着丈夫不在家拜访妻子在线观看日本电影| 小草青青免费观看完整版| 叱咤乐坛| 渴望 电视剧| 满天星HD版女超人在线| 超凡蜘蛛侠| 约会大作战第四季在线观看完整版| 老地方传奇| 黑暗森林2023美国| 吸血鬼日记第四季快播| 雾蓝色的雨后晴天| 我在伊朗长大台词| 巜被按摩师按摩并做爰| 男神与女神的罗曼史| 与狼共舞全集| 301勇士| 《北越暴行》2| 想要爸爸播种子免费观看| 黑人男友| 千年情人| 无暇修女| 武松蒋玲玲| 一生一世电视剧完整版| 高清《为你遗憾》电影| 爷们儿全集剧情介绍| 男按摩师做乳房按摩视频日韩电影 | 天龙高清远古电视剧在线观看| 咱村书记是明星| 美国式保罗1-4| 爸爸需要你的种子| 不扣纽扣女孩免费观看完整电影| 灭门惨案 孽杀| 唐人街探案3免费观看完整在线| 需要妈妈的种子| 婚前试爱下载| 道师爷3电影在线观看完整版| 善良的嫂嫂2| 免费播放白峰美羽救赎治愈电影视频| 肖申克的救赎免费| 勇往直前20100516| 金瓶梅2百度影音| 麦乐迪马克斯《家庭矛盾》在线观看| 送上司老婆回家| 走出监狱的女人电视剧免费| 熊出没之过年全集| 电影玩物| 日军越南暴行2电影| 我的山与海| 维生素爱香水| 神箭电视剧全集| 卖房子的女销售员1| 电影17·3免费观看完整版在线观看| 《外出》2015版| 男女在一起愁愁愁视频电视剧 | 《夕颜》动漫番剧全集免费观看| 鬼吹灯之天星术国语版| 试婚电影| 西风残照是什么生肖| 朴诗妍《爱的释放》电视剧在线观看 | 法国版《少女感》| 三年在线观看免费国语普通话 | 一次特殊的游泳课| 欧美电影爱我几合莫妮卡主演免费观看| 雨花石原唱| 《21世纪爱情指南| 我和我的家乡电影免费播放完整版| 越狱兔第5季| 勿忘仇敌| 《健美》在线观看免费| 电视剧与狼共舞| 花非花雾非雾完整版| 印尼一女子被5米长蟒蛇吞吃| 高级女特工满天星| 日漫xl司令第一季| 黑白道粤语| 趴下老子要从后面CAO死你视频| 金镖黄天霸| 周弘版《村姑》免费| 办公室卫生标准| 张版西游记| 天地有情台湾电视剧| 日本空姐2019满天星法版:星辉照耀下的职业光芒 | 情深深雨蒙蒙48集全集免费看| 思念是一种病齐秦| 僵尸道长1高清国语版在线观看| 牙医姐妹1986日语版在线观看| 顶楼的大象在线观看| 电影《牙医姊妹》免费播放| 新视觉6080| 平凡的荣耀免费观看| 木下檀檩子伦理电影| 半碗村传奇免费观看| 爱情诊所在线观看| 新百合族3| 《法国空乘5》在线| 麦子交换1的中文翻译曼哪| 天罚电视剧在线观看完整版| 大雨天和驾校教练在车里| 韩国高清mv| 棘手狂情电影完整版| 迷茫的管家与懦弱的我| 新金梅瓶2 国语完整版| 梦在海这边电视剧| 女超人麦乐迪在线| xl司令34集全免费观看| 柳岩热舞| 恶作剧之吻1完整版免费观看| 一起长大电视剧| 电影《美容院的特殊待遇》男主开设| 许我耀眼1-40集完整版全集| 我的三个母亲全集| 南京照相馆电影免费观看高清| 美丽的姑娘完整版| 宁安如梦热播| 扑克王粤语| 密挑免费版| 妖怪少女石榴| 厨艺大师第三季| 局长从后面握住我的奶| 大江大河第一部免费完整版在线观看| 爱我几何电影在线观看免费完整版 在线播放 | 麦迪乐女超人在线观看完整免费高清原声满天星百度云 | 猎罪图鉴免费观看完整版| 正阳门下电视剧全集36| 羔羊医生2国语版免费播放| 含山县| 俄罗斯养女求爸爸播种伦理电影中字| 大侠黄飞鸿| 非常人贩3高清| 高清今天开始是人类未删减| 《壮志凌云》凯登克罗斯版演员表| 电影《完美的售后服务》叶爱来| 我爱hk开心万岁国语| 电视剧海天之恋| 耶稣受难记| 怪盗女谍天海翼在线观看| 生死兄弟情剧情介绍| 灭火宝贝2美版罗丽莎的启蒙| 金装四大才子国语全集| 全职猎人11| 我的漂亮朋友电视剧免费观看 | 斗罗大陆261集免费观看| 赛尔号4动画片全集| 哪吒2之魔童闹海| 曲周县委书记| 电影《千金与仆人》免费播放| 唐大江被铐是哪一集| 一代皇后大玉儿电视剧| 人与狗马猪p4| 学生的妈妈4在观完整有限中字| 插曲的痛免费播放完整中国| 不负如来不负卿| 一起再看流星雨1| 肉食日未删减| 大耳朵图图第五部| 八角笼中免费观看全集| 曾志伟电影全集国语| 小早川伶子电影| 朝花夕誓| 北京青年35| 战狼5免费观看完整版| 女人是男人的未来免费观看| 斗罗大陆114| 《布鲁克读大学》1978| 电视剧大女当嫁| 沐浴之王在线| 哲仁皇后电视剧在线观看免费| 混血儿的摇篮曲。| 明日战记| 蓝宇 电影| 《苹果》| 色九月在线| 韩国电影《瑜伽教练》的主演是谁| 在暴雪时分大结局点映礼| 双柏县| 满天星女版美国队长| 陪你逐风飞翔电视剧免费观看23| 《超级保镖》全集观看| 除暴电影在线高清观看| 女超人电影| 电影杜鹃山| 赘婿电视剧| 新审死官 电视剧| 《姐弟恋》电影免费播放| HD版《激战丛林》演员| 鬼吹灯之天星术| 斯塔姆2| 桃色成人| 守望爱情| 圣特罗佩的姑娘们免费播放| 麦子交换3中字版电影| 妈妈再我一次| 华丽的诱惑| 高清《挡不住的疯情》| 阿合奇县| 私人航空免费观看完整版| 生化危机无尽黑暗| 无处藏身全集电视剧免费观看| 超能机器女友| 舞蹈红红火火| 战狼6电影在线观看免费版高清| 河套宽频| 魔女由熙| 狂野时代未删减| 白袜帅哥飞机| 小小水蜜6全集电视剧| 荣华令全集免费观看| 小女花不弃电视剧免费观看全集| 终结电视剧全集观看| 电影《爱我几何》高清在线看| 善良的秘书法国空乘| 巨人捕手杰克快播| 顶楼第三季全集免费观看| 电影《金悔瓶》高清完整版免费 | 大耳朵图图第一季| 白蛇:浮生| 仙五电视剧| 《卖百科全书的女人》(2000年,法国) | 回复术士的重启人生10| 末班车后胶囊旅馆无遮挡| 黑白配HD1080免费全集| 男生女生一起愁愁愁电视剧观在现观看| 湾仔之虎| 王贵与安娜电视剧免费观看| 胜女的代价剧情介绍| 欧美黑白配经典在线观看| 一点就到家电影| 捉鬼有限公司| 军统枪下的女人| 女超人麦乐迪下载| 左右免费| 奈何流年枉情深短剧免费观看| 西游记续集8| 女性3对1:三人一次性体检电影| 陪看:孙颖莎王曼昱巅峰对决| 420电影网| 狄仁杰通天人偶免费观看全集高清版| 法国少女农场| 莫妮卡《爱我几何》剧情介绍在线观看 | 幸运星国语版| 《女超人麦乐迪》免费播放| 《圣特罗佩姑娘们1982》电影在线观看| 九重紫电视剧在线观看免费完整版| 电视剧富贵| 数字马戏团动画片全集| 《姐妹牙医》在线观电影| 潘金梅三级做爰| 僵尸100| 安斋拉拉躲雨电影在哪看| 梦想三国原版电视剧在线观看免费 | 瓜达卢佩的玫瑰 在线| 美一架波音737冲出跑道| 黄飞鸿之壮志凌云| 睡衣小英雄| 《卖房子的女销售》台湾| 灵魂符咒| 斗破苍穹58| 儿子半夜猥琐妈妈| 藏海传电视剧高清| 意大利电影需要爸爸的种子| 无情冷酷无理取闹| 无间电视剧免费观看40集西瓜| 人马配速90分钟电视剧| 日韩无遮挡伦理片:按摩大胸妹子| 名侦探柯南620| 美国版荷尔蒙15| 隆安县公安局长陆世长| 完美世界免费观看完整在线观看| 神雕侠侣未删减陈晓版| 长相思第二季免费播放全集| 坎贝奇第二部曲品味人生电影| 都市风水:改运超神全集免费| 艳姆动漫第6集免费| 师傅在首尔| 爱我几何原声在线完整版| 古船女人和网| 康定情歌dj| 6帕克禁忌| 黑档案 东北第一黑帮覆灭记| 人民的名义 电视剧| 荒岛女儿国满天星版| 特派外卖员视频| 平步青云| 两个人电影日本完整版| 大学生理发店的特殊待遇| 扫黑电视剧在线观看| 求爱夜惊魂| 一家乱战5高清免费播放| 大江大河2在线观看| 你的婚礼免费看| 欧美伦理电影炸天小姐| 手足兄弟短剧| 鹿鼎记陈小春国语 | 叛狱无间| 陷入我们的热恋电视剧免费观看 | 白峰电影在线观看| 白日梦与她| 电视剧武则天全集| 三生有幸遇上你免费高清在线播放| 《心动的信号》第八季| 社长妻子替夫还债全集免费观看 | 秋儿自驾旅行最新视频| 李丽珍舒淇徐锦江一起演过的电影| 成吉思汗的电视剧| 高清遇见世界未删减| 日本满天星电影免费观看 | 凤归短剧全集免费观看视频播放 | 奎屯市| 女超人无删减完整| 哈儿传奇剧情| 绝命追杀令2就地正法| 中国油价处在世界什么水平| 速度与激情9在线观看免费完整版| 满清十大刑酷 快播| 同学妈妈| 飞驰人生1| 小背篓伴奏| 亦舞之城免费完整版| 借口 电影| 风云十里洋场全集| 乳房按摩的电影在线观看| 村妓K8经典网| 《西虹市首富》电影| 19岁姑娘电视剧免费观看| 红娘子大结局| 不能失去你| 需要爸爸播种籽2| 我的漂亮的瘦子5HD中字_午夜电影全集_完整版免费在线观看-天天影院 | 痛的插曲的免费高清完整版| 动漫《听爸爸的话》| 埃及猫原版动画| 张译以法之名免费观看| 贫穷神来了动漫| 瓜达卢佩的玫瑰在线观看| HD版泰山《激战丛林》完整| 小鞋子电影| 断箭行动免费| 年轻人 高清在线观看| 唔该借歪| 《哪吒2》高清完整版在线观看 | 电视剧玫瑰故事免费观看| 动画片美猴王| 当旺老爸| 绅士的品格 手机| 圣斗士星矢冥王| 斯巴达第四季完整版在线播放 | 速度与激情11| 《聊斋之鬼狐》完整版| 西游记搞笑配音| 美版HD古墓丽影| 双人调情按摩术在线中字 | 《特邀外卖员》完整版在线观看| 夫上司装饰全集观看| 还珠格格第1部全集| 朋友的母亲3中字谜给看| 总裁动真心了:契约婚姻全集免费| 开心超人联盟之奇幻谜瑞岛2021| 私人女性监狱| 李采潭特殊的治疗2| 巧舌如簧的意思| 百灵潭电视剧| 父贵荣华短剧全集| 欺诈游戏2| 执笔在线观看| 淫的方程式在线观看| 老女人免费观看高清电视剧| 我漂亮的老师播放在线观看| 四季歌简谱| 快乐到家好看吗| 上海电视台节目预告| 《悲惨遭遇》1980年法国| 游泳池的特殊待遇电影| 事物的秘密水池的全段在几分钟 | 鹿鼎记免费| 《爱你几何》免费完整版| 大时代2011| 最美的青春电视剧免费播放| 天蚕变电视剧| 美景之屋在线完整版中字3|