日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言指针祥讲

發(fā)布時間:2024/7/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言指针祥讲 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言:復(fù)雜類型說明
????要了解指針,多多少少會出現(xiàn)一些比較復(fù)雜的類型,所以我先介紹一下如何完全理解一個復(fù)雜類型,要理解復(fù)雜類型其實(shí)很簡單,一個類型里會出現(xiàn)很多運(yùn)算符,他們也像普通的表達(dá)式一樣,有優(yōu)先級,其優(yōu)先級和運(yùn)算優(yōu)先級一樣,所以我總結(jié)了一下其原則:從變量名處起,根據(jù)運(yùn)算符優(yōu)先級結(jié)合,一步一步分析.下面讓我們先從簡單的類型開始慢慢分析吧:

  • int p; //這是一個普通的整型變量 ?
  • int *p; //首先從P 處開始,先與*結(jié)合,所以說明P 是一個指針,然后再與int 結(jié)合,說明指針?biāo)赶虻膬?nèi)容的類型為int 型.所以P是一個返回整型數(shù)據(jù)的指針 ?
  • int p[3]; //首先從P 處開始,先與[]結(jié)合,說明P 是一個數(shù)組,然后與int 結(jié)合,說明數(shù)組里的元素是整型的,所以P 是一個由整型數(shù)據(jù)組成的數(shù)組 ?
  • int *p[3]; //首先從P 處開始,先與[]結(jié)合,因?yàn)槠鋬?yōu)先級比*高,所以P 是一個數(shù)組,然后再與*結(jié)合,說明數(shù)組里的元素是指針類型,然后再與int 結(jié)合,說明指針?biāo)赶虻膬?nèi)容的類型是整型的,所以P 是一個由返回整型數(shù)據(jù)的指針?biāo)M成的數(shù)組 ?
  • int (*p)[3]; //首先從P 處開始,先與*結(jié)合,說明P 是一個指針然后再與[]結(jié)合(與"()"這步可以忽略,只是為了改變優(yōu)先級),說明指針?biāo)赶虻膬?nèi)容是一個數(shù)組,然后再與int 結(jié)合,說明數(shù)組里的元素是整型的.所以P 是一個指向由整型數(shù)據(jù)組成的數(shù)組的指針 ?
  • int **p; //首先從P 開始,先與*結(jié)合,說是P 是一個指針,然后再與*結(jié)合,說明指針?biāo)赶虻脑厥侵羔?然后再與int 結(jié)合,說明該指針?biāo)赶虻脑厥钦蛿?shù)據(jù).由于二級指針以及更高級的指針極少用在復(fù)雜的類型中,所以后面更復(fù)雜的類型我們就不考慮多級指針了,最多只考慮一級指針. ?
  • int p(int); //從P 處起,先與()結(jié)合,說明P 是一個函數(shù),然后進(jìn)入()里分析,說明該函數(shù)有一個整型變量的參數(shù),然后再與外面的int 結(jié)合,說明函數(shù)的返回值是一個整型數(shù)據(jù) ?
  • Int (*p)(int); //從P 處開始,先與指針結(jié)合,說明P 是一個指針,然后與()結(jié)合,說明指針指向的是一個函數(shù),然后再與()里的int 結(jié)合,說明函數(shù)有一個int 型的參數(shù),再與最外層的int 結(jié)合,說明函數(shù)的返回類型是整型,所以P 是一個指向有一個整型參數(shù)且返回類型為整型的函數(shù)的指針 ?
  • int *(*p(int))[3]; //可以先跳過,不看這個類型,過于復(fù)雜從P 開始,先與()結(jié)合,說明P 是一個函數(shù),然后進(jìn)入()里面,與int 結(jié)合,說明函數(shù)有一個整型變量參數(shù),然后再與外面的*結(jié)合,說明函數(shù)返回的是一個指針,,然后到最外面一層,先與[]結(jié)合,說明返回的指針指向的是一個數(shù)組,然后再與*結(jié)合,說明數(shù)組里的元素是指針,然后再與int 結(jié)合,說明指針指向的內(nèi)容是整型數(shù)據(jù).所以P 是一個參數(shù)為一個整數(shù)據(jù)且返回一個指向由整型指針變量組成的數(shù)組的指針變量的函數(shù).?

說到這里也就差不多了,我們的任務(wù)也就這么多,理解了這幾個類型,其它的類型對我們來說也是小菜了,不過我們一般不會用太復(fù)雜的類型,那樣會大大減小程序的可讀性,請慎用,這上面的幾種類型已經(jīng)足夠我們用了.

一、細(xì)說指針
指針是一個特殊的變量,它里面存儲的數(shù)值被解釋成為內(nèi)存里的一個地址。要搞清一個指針需要搞清指針的四方面的內(nèi)容:指針的類型、指針?biāo)赶虻念愋汀⒅羔樀闹祷蛘呓兄羔標(biāo)赶虻膬?nèi)存區(qū)、指針本身所占據(jù)的內(nèi)存區(qū)。讓我們分別說明。

先聲明幾個指針放著做例子:
例一:

  • (1)int*ptr; ?
  • (2)char*ptr; ?
  • (3)int**ptr; ?
  • (4)int(*ptr)[3]; ?
  • (5)int*(*ptr)[4];

1.指針的類型
從語法的角度看,你只要把指針聲明語句里的指針名字去掉,剩下的部分就是這個指針的類型。這是指針本身所具有的類型。讓我們看看例一中各個指針的類型:

  • (1)int*ptr;//指針的類型是int*
  • (2)char*ptr;//指針的類型是char*
  • (3)int**ptr;//指針的類型是int**
  • (4)int(*ptr)[3];//指針的類型是int(*)[3]
  • (5)int*(*ptr)[4];//指針的類型是int*(*)[4]

怎么樣?找出指針的類型的方法是不是很簡單?
2.指針?biāo)赶虻念愋?br /> 當(dāng)你通過指針來訪問指針?biāo)赶虻膬?nèi)存區(qū)時,指針?biāo)赶虻念愋蜎Q定了編譯器將把那片內(nèi)存區(qū)里的內(nèi)容當(dāng)做什么來看待。
從語法上看,你只須把指針聲明語句中的指針名字和名字左邊的指針聲明符*去掉,剩下的就是指針?biāo)赶虻念愋汀@?#xff1a;

  • (1)int*ptr; //指針?biāo)赶虻念愋褪莍nt
  • (2)char*ptr; //指針?biāo)赶虻牡念愋褪莄har
  • (3)int**ptr; //指針?biāo)赶虻牡念愋褪莍nt*
  • (4)int(*ptr)[3]; //指針?biāo)赶虻牡念愋褪莍nt()[3]
  • (5)int*(*ptr)[4]; //指針?biāo)赶虻牡念愋褪莍nt*()[4]
  • 在指針的算術(shù)運(yùn)算中,指針?biāo)赶虻念愋陀泻艽蟮淖饔谩?br /> 指針的類型(即指針本身的類型)和指針?biāo)赶虻念愋褪莾蓚€概念。當(dāng)你對C 越來越熟悉時,你會發(fā)現(xiàn),把與指針攪和在一起的"類型"這個概念分成"指針的類型"和"指針?biāo)赶虻念愋?#34;兩個概念,是精通指針的關(guān)鍵點(diǎn)之一。我看了不少書,發(fā)現(xiàn)有些寫得差的書中,就把指針的這兩個概念攪在一起了,所以看起書來前后矛盾,越看越糊涂。
    3.指針的值----或者叫指針?biāo)赶虻膬?nèi)存區(qū)或地址
    指針的值是指針本身存儲的數(shù)值,這個值將被編譯器當(dāng)作一個地址,而不是一個一般的數(shù)值。在32 位程序里,所有類型的指針的值都是一個32 位整數(shù),因?yàn)?2 位程序里內(nèi)存地址全都是32 位長。指針?biāo)赶虻膬?nèi)存區(qū)就是從指針的值所代表的那個內(nèi)存地址開始,長度為si zeof(指針?biāo)赶虻念愋?的一片內(nèi)存區(qū)。以后,我們說一個指針的值是XX,就相當(dāng)于說該指針指向了以XX 為首地址的一片內(nèi)存區(qū)域;我們說一個指針指向了某塊內(nèi)存區(qū)域,就相當(dāng)于說該指針的值是這塊內(nèi)存區(qū)域的首地址。指針?biāo)赶虻膬?nèi)存區(qū)和指針?biāo)赶虻念愋褪莾蓚€完全不同的概念。在例一中,指針?biāo)赶虻念愋鸵呀?jīng)有了,但由于指針還未初始化,所以它所指向的內(nèi)存區(qū)是不存在的,或者說是無意義的。
    以后,每遇到一個指針,都應(yīng)該問問:這個指針的類型是什么?指針指的類型是什么?該指針指向了哪里?(重點(diǎn)注意)
    4 指針本身所占據(jù)的內(nèi)存區(qū)
    指針本身占了多大的內(nèi)存?你只要用函數(shù)sizeof(指針的類型)測一下就知道了。在32 位平臺里,指針本身占據(jù)了4 個字節(jié)的長度。指針本身占據(jù)的內(nèi)存這個概念在判斷一個指針表達(dá)式(后面會解釋)是否是左值時很有用。


    二、指針的算術(shù)運(yùn)算
    指針可以加上或減去一個整數(shù)。指針的這種運(yùn)算的意義和通常的數(shù)值的加減運(yùn)算的意義是不一樣的,以單元為單位。例如:
    例二:

    ? ? char a[20]; ?
    ? ? int *ptr=(int *)a; //強(qiáng)制類型轉(zhuǎn)換并不會改變a 的類型 ?
    ? ? ptr++; ?

    在上例中,指針ptr 的類型是int*,它指向的類型是int,它被初始化為指向整型變量a。接下來的第3句中,指針ptr被加了1,編譯器是這樣處理的:它把指針ptr 的值加上了sizeof(int),在32 位程序中,是被加上了4,因?yàn)樵?2 位程序中,int 占4 個字節(jié)。由于地址是用字節(jié)做單位的,故ptr 所指向的地址由原來的變量a 的地址向高地址方向增加了4 個字節(jié)。由于char 類型的長度是一個字節(jié),所以,原來ptr 是指向數(shù)組a 的第0 號單元開始的四個字節(jié),此時指向了數(shù)組a 中從第4 號單元開始的四個字節(jié)。我們可以用一個指針和一個循環(huán)來遍歷一個數(shù)組,看例子:

    例三:

    ? ? int array[20]={0}; ?
    ? ? int *ptr=array; ?
    ? ? for(i=0;i<20;i++) ?
    ? ? { ?
    ? ? ? ? (*ptr)++; ?
    ? ? ? ? ptr++; ?
    ? ? } ?

    這個例子將整型數(shù)組中各個單元的值加1。由于每次循環(huán)都將指針ptr加1 個單元,所以每次循環(huán)都能訪問數(shù)組的下一個單元。

    再看例子:
    例四:

    char a[20]="You_are_a_girl"; ?
    int *ptr=(int *)a; ?
    ptr+=5;?

    在這個例子中,ptr 被加上了5,編譯器是這樣處理的:將指針ptr 的值加上5 乘sizeof(int),在32 位程序中就是加上了5 乘4=20。由于地址的單位是字節(jié),故現(xiàn)在的ptr 所指向的地址比起加5 后的ptr 所指向的地址來說,向高地址方向移動了20 個字節(jié)。
    在這個例子中,沒加5 前的ptr 指向數(shù)組a 的第0 號單元開始的四個字節(jié),加5 后,ptr 已經(jīng)指向了數(shù)組a 的合法范圍之外了。雖然這種情況在應(yīng)用上會出問題,但在語法上卻是可以的。這也體現(xiàn)出了指針的靈活性。如果上例中,ptr 是被減去5,那么處理過程大同小異,只不過ptr 的值是被減去5 乘sizeof(int),新的ptr 指向的地址將比原來的ptr 所指向的地址向低地址方向移動了20 個字節(jié)。
    下面請?jiān)试S我再舉一個例子:(一個誤區(qū))

    例五:

    ? ? #include<stdio.h> ?
    ? ? int main() ?
    ? ? { ?
    ? ? ? ? char a[20]=" You_are_a_girl"; ?
    ? ? ? ? char *p=a; ?
    ? ? ? ? char **ptr=&p; ?
    ? ? ? ? //printf("p=%d\n",p); ?
    ? ? ? ? //printf("ptr=%d\n",ptr); ?
    ? ? ? ? //printf("*ptr=%d\n",*ptr); ?
    ? ? ? ? printf("**ptr=%c\n",**ptr); ?
    ? ? ? ? ptr++; ?
    ? ? ? ? //printf("ptr=%d\n",ptr); ?
    ? ? ? ? //printf("*ptr=%d\n",*ptr); ?
    ? ? ? ? printf("**ptr=%c\n",**ptr); ?
    ? ? } ?

    誤區(qū)一、輸出答案為Y 和o
    誤解:ptr 是一個char 的二級指針,當(dāng)執(zhí)行ptr++;時,會使指針加一個sizeof(char),所以輸出如上結(jié)果,這個可能只是少部分人的結(jié)果.
    誤區(qū)二、輸出答案為Y 和a誤解:ptr 指向的是一個char *類型,當(dāng)執(zhí)行ptr++;時,會使指針加一個sizeof(char *)(有可能會有人認(rèn)為這個值為1,那就會得到誤區(qū)一的答案,這個值應(yīng)該是4,參考前面內(nèi)容), 即&p+4; 那進(jìn)行一次取值運(yùn)算不就指向數(shù)組中的第五個元素了嗎?那輸出的結(jié)果不就是數(shù)組中第五個元素了嗎?答案是否定的.
    正解: ptr 的類型是char **,指向的類型是一個char *類型,該指向的地址就是p的地址(&p),當(dāng)執(zhí)行ptr++;時,會使指針加一個sizeof(char*),即&p+4;那*(&p+4)指向哪呢,這個你去問上帝吧,或者他會告訴你在哪?所以最后的輸出會是一個隨機(jī)的值,或許是一個非法操作.
    總結(jié)一下:
    一個指針ptrold 加(減)一個整數(shù)n 后,結(jié)果是一個新的指針ptrnew,ptrnew 的類型和ptrold 的類型相同,ptrnew 所指向的類型和ptrold所指向的類型也相同。ptrnew 的值將比ptrold 的值增加(減少)了n 乘sizeof(ptrold 所指向的類型)個字節(jié)。就是說,ptrnew 所指向的內(nèi)存區(qū)將比ptrold 所指向的內(nèi)存區(qū)向高(低)地址方向移動了n 乘sizeof(ptrold 所指向的類型)個字節(jié)。指針和指針進(jìn)行加減:兩個指針不能進(jìn)行加法運(yùn)算,這是非法操作,因?yàn)檫M(jìn)行加法后,得到的結(jié)果指向一個不知所向的地方,而且毫無意義。兩個指針可以進(jìn)行減法操作,但必須類型相同,一般用在數(shù)組方面,不多說了。


    三、運(yùn)算符&和*
    這里&是取地址運(yùn)算符,*是間接運(yùn)算符。
    &a 的運(yùn)算結(jié)果是一個指針,指針的類型是a 的類型加個*,指針?biāo)赶虻念愋褪莂 的類型,指針?biāo)赶虻牡刂仿?#xff0c;那就是a 的地址。
    *p 的運(yùn)算結(jié)果就五花八門了。總之*p 的結(jié)果是p 所指向的東西,這個東西有這些特點(diǎn):它的類型是p 指向的類型,它所占用的地址是p所指向的地址。
    例六:

    int a=12; int b; int *p; int **ptr; ?
    p=&a; //&a 的結(jié)果是一個指針,類型是int*,指向的類型是 ?
    //int,指向的地址是a 的地址。 ?
    *p=24; //*p 的結(jié)果,在這里它的類型是int,它所占用的地址是 ?
    //p 所指向的地址,顯然,*p 就是變量a。 ?
    ptr=&p; //&p 的結(jié)果是個指針,該指針的類型是p 的類型加個*, ?
    //在這里是int **。該指針?biāo)赶虻念愋褪莗 的類型,這 ?
    //里是int*。該指針?biāo)赶虻牡刂肪褪侵羔榩 自己的地址。 ?
    *ptr=&b; //*ptr 是個指針,&b 的結(jié)果也是個指針,且這兩個指針 ?
    //的類型和所指向的類型是一樣的,所以用&b 來給*ptr 賦 ?
    //值就是毫無問題的了。 ?
    **ptr=34; //*ptr 的結(jié)果是ptr 所指向的東西,在這里是一個指針, ?
    //對這個指針再做一次*運(yùn)算,結(jié)果是一個int 類型的變量。?

    四、指針表達(dá)式
    一個表達(dá)式的結(jié)果如果是一個指針,那么這個表達(dá)式就叫指針表式。
    下面是一些指針表達(dá)式的例子:
    例七:
    int a,b; ?
    int array[10]; ?
    int *pa; ?
    pa=&a; //&a 是一個指針表達(dá)式。 ?
    Int **ptr=&pa; //&pa 也是一個指針表達(dá)式。 ?
    *ptr=&b; //*ptr 和&b 都是指針表達(dá)式。 ?
    pa=array; ?
    pa++; //這也是指針表達(dá)式。
    例八:

    char *arr[20]; ?
    char **parr=arr; //如果把a(bǔ)rr 看作指針的話,arr 也是指針表達(dá)式 ?
    char *str; ?
    str=*parr; //*parr 是指針表達(dá)式 ?
    str=*(parr+1); //*(parr+1)是指針表達(dá)式 ?
    str=*(parr+2); //*(parr+2)是指針表達(dá)式
    由于指針表達(dá)式的結(jié)果是一個指針,所以指針表達(dá)式也具有指針?biāo)哂械乃膫€要素:指針的類型,指針?biāo)赶虻念愋?#xff0c;指針指向的內(nèi)存區(qū),指針自身占據(jù)的內(nèi)存。
    好了,當(dāng)一個指針表達(dá)式的結(jié)果指針已經(jīng)明確地具有了指針自身占據(jù)的內(nèi)存的話,這個指針表達(dá)式就是一個左值,否則就不是一個左值。在例七中,&a 不是一個左值,因?yàn)樗€沒有占據(jù)明確的內(nèi)存。*ptr 是一個左值,因?yàn)?ptr 這個指針已經(jīng)占據(jù)了內(nèi)存,其實(shí)*ptr 就是指針pa,既然pa 已經(jīng)在內(nèi)存中有了自己的位置,那么*ptr 當(dāng)然也有了自己的位置。
    五、數(shù)組和指針的關(guān)系
    數(shù)組的數(shù)組名其實(shí)可以看作一個指針。看下例:
    例九:

    • int array[10]={0,1,2,3,4,5,6,7,8,9},value; ?
    • value=array[0]; //也可寫成:value=*array; ?
    • value=array[3]; //也可寫成:value=*(array+3); ?
    • value=array[4]; //也可寫成:value=*(array+4);

    上例中,一般而言數(shù)組名array 代表數(shù)組本身,類型是int[10],但如果把a(bǔ)rray 看做指針的話,它指向數(shù)組的第0 個單元,類型是int* 所指向的類型是數(shù)組單元的類型即int。因此*array 等于0 就一點(diǎn)也不奇怪了。同理,array+3 是一個指向數(shù)組第3 個單元的指針,所以*(array+3)等于3。其它依此類推。
    例十:

    • char *str[3]={ ?
    • ? ? "Hello,thisisasample!", ?
    • ? ? "Hi,goodmorning.", ?
    • ? ? "Helloworld" ?
    • }; ?
    • char s[80]; ?
    • strcpy(s,str[0]); //也可寫成strcpy(s,*str); ?
    • strcpy(s,str[1]); //也可寫成strcpy(s,*(str+1)); ?
    • strcpy(s,str[2]); //也可寫成strcpy(s,*(str+2));?

    上例中,str 是一個三單元的數(shù)組,該數(shù)組的每個單元都是一個指針,這些指針各指向一個字符串。把指針數(shù)組名str 當(dāng)作一個指針的話,它指向數(shù)組的第0 號單元,它的類型是char **,它指向的類型是char *。
    *str 也是一個指針,它的類型是char *,它所指向的類型是char,它指向的地址是字符串"Hello,thisisasample!"的第一個字符的地址,即'H'的地址。注意:字符串相當(dāng)于是一個數(shù)組,在內(nèi)存中以數(shù)組的形式儲存,只不過字符串是一個數(shù)組常量,內(nèi)容不可改變,且只能是右值.如果看成指針的話,他即是常量指針,也是指針常量.
    str+1 也是一個指針,它指向數(shù)組的第1 號單元,它的類型是char**,它指向的類型是char*。
    *(str+1)也是一個指針,它的類型是char*,它所指向的類型是char,它指向"Hi,goodmorning."的第一個字符'H'

    下面總結(jié)一下數(shù)組的數(shù)組名(數(shù)組中儲存的也是數(shù)組)的問題:
    聲明了一個數(shù)組TYPE array[n],則數(shù)組名稱array 就有了兩重含義:
    第一,它代表整個數(shù)組,它的類型是TYPE[n];
    第二,它是一個常量指針,該指針的類型是TYPE*,該指針指向的類型是TYPE,也就是數(shù)組單元的類型,該指針指向的內(nèi)存區(qū)就是數(shù)組第0 號單元,該指針自己占有單獨(dú)的內(nèi)存區(qū),注意它和數(shù)組第0 號單元占據(jù)的內(nèi)存區(qū)是不同的。該指針的值是不能修改的,即類似array++的表達(dá)式是錯誤的。在不同的表達(dá)式中數(shù)組名array 可以扮演不同的角色。在表達(dá)式sizeof(array)中,數(shù)組名array 代表數(shù)組本身,故這時sizeof 函數(shù)測出的是整個數(shù)組的大小。
    在表達(dá)式*array 中,array 扮演的是指針,因此這個表達(dá)式的結(jié)果就是數(shù)組第0 號單元的值。sizeof(*array)測出的是數(shù)組單元的大小。
    表達(dá)式array+n(其中n=0,1,2,.....)中,array 扮演的是指針,故array+n 的結(jié)果是一個指針,它的類型是TYPE *,它指向的類型是TYPE,它指向數(shù)組第n號單元。故sizeof(array+n)測出的是指針類型的大小。在32 位程序中結(jié)果是4
    例十一:

    • int array[10]; ?
    • int (*ptr)[10]; ?
    • ptr=&array;

    上例中ptr 是一個指針,它的類型是int(*)[10],他指向的類型是int[10] ,我們用整個數(shù)組的首地址來初始化它。在語句ptr=&array中,array 代表數(shù)組本身。
    本節(jié)中提到了函數(shù)sizeof(),那么我來問一問,sizeof(指針名稱)測出的究竟是指針自身類型的大小呢還是指針?biāo)赶虻念愋偷拇笮?#xff1f;
    答案是前者。例如:

    • int(*ptr)[10];
    • 則在32 位程序中,有:
    • sizeof(int(*)[10])==4
    • sizeof(int[10])==40
    • sizeof(ptr)==4

    實(shí)際上,sizeof(對象)測出的都是對象自身的類型的大小,而不是別的什么類型的大小。

    六、指針和結(jié)構(gòu)類型的關(guān)系
    可以聲明一個指向結(jié)構(gòu)類型對象的指針。
    例十二:

    ? ? struct MyStruct ?
    ? ? { ?
    ? ? ? ? int a; ?
    ? ? ? ? int b; ?
    ? ? ? ? int c; ?
    ? ? }; ?
    ? ? struct MyStruct ss={20,30,40}; ?
    ? ? //聲明了結(jié)構(gòu)對象ss,并把ss 的成員初始化為20,30 和40。 ?
    ? ? struct MyStruct *ptr=&ss; ?
    ? ? //聲明了一個指向結(jié)構(gòu)對象ss 的指針。它的類型是 ?
    ? ? //MyStruct *,它指向的類型是MyStruct。 ?
    ? ? int *pstr=(int*)&ss; ?
    ? ? //聲明了一個指向結(jié)構(gòu)對象ss 的指針。但是pstr 和 ?
    ? ? //它被指向的類型ptr 是不同的。 ?
    請問怎樣通過指針ptr 來訪問ss 的三個成員變量?
    答案:
    ptr->a; //指向運(yùn)算符,或者可以這們(*ptr).a,建議使用前者
    ptr->b;
    ptr->c;

    又請問怎樣通過指針pstr 來訪問ss 的三個成員變量?
    答案:
    *pstr; //訪問了ss 的成員a。
    *(pstr+1); //訪問了ss 的成員b。
    *(pstr+2) //訪問了ss 的成員c。
    雖然我在我的MSVC++6.0 上調(diào)式過上述代碼,但是要知道,這樣使用pstr 來訪問結(jié)構(gòu)成員是不正規(guī)的,為了說明為什么不正規(guī),讓我們看看怎樣通過指針來訪問數(shù)組的各個單元: (將結(jié)構(gòu)體換成數(shù)組)

    例十三:

    int array[3]={35,56,37}; ?
    int *pa=array; ?
    //通過指針pa 訪問數(shù)組array 的三個單元的方法是: ?
    *pa; //訪問了第0 號單元 ?
    *(pa+1); //訪問了第1 號單元 ?
    *(pa+2); //訪問了第2 號單元?
    從格式上看倒是與通過指針訪問結(jié)構(gòu)成員的不正規(guī)方法的格式一樣。
    所有的C/C++編譯器在排列數(shù)組的單元時,總是把各個數(shù)組單元存放在連續(xù)的存儲區(qū)里,單元和單元之間沒有空隙。但在存放結(jié)構(gòu)對象的各個成員時,在某種編譯環(huán)境下,可能會需要字對齊或雙字對齊或者是別的什么對齊,需要在相鄰兩個成員之間加若干個"填充字節(jié)",這就導(dǎo)致各個成員之間可能會有若干個字節(jié)的空隙。
    所以,在例十二中,即使*pstr 訪問到了結(jié)構(gòu)對象ss 的第一個成員變量a,也不能保證*(pstr+1)就一定能訪問到結(jié)構(gòu)成員b。因?yàn)槌蓡Ta 和成員b 之間可能會有若干填充字節(jié),說不定*(pstr+1)就正好訪問到了這些填充字節(jié)呢。這也證明了指針的靈活性。要是你的目的就是想看看各個結(jié)構(gòu)成員之間到底有沒有填充字節(jié),嘿,這倒是個不錯的方法。
    不過指針訪問結(jié)構(gòu)成員的正確方法應(yīng)該是象例十二中使用指針ptr 的方法。

    七、指針和函數(shù)的關(guān)系
    可以把一個指針聲明成為一個指向函數(shù)的指針。
    int fun1(char *,int);
    int (*pfun1)(char *,int);
    pfun1=fun1;
    int a=(*pfun1)("abcdefg",7); //通過函數(shù)指針調(diào)用函數(shù)。
    可以把指針作為函數(shù)的形參。在函數(shù)調(diào)用語句中,可以用指針表達(dá)式來作為實(shí)參。
    例十四:

    ? ? int fun(char *); ?
    ? ? inta; ?
    ? ? char str[]="abcdefghijklmn"; ?
    ? ? a=fun(str); ?
    ? ? int fun(char *s) ?
    ? ? { ?
    ? ? ? ? int num=0; ?
    ? ? ? ? for(int i=0;;) ?
    ? ? ? ? { ?
    ? ? ? ? ? ? num+=*s;s++; ?
    ? ? ? ? } ?
    ? ? ? ? return num; ?
    ? ? } ?
    這個例子中的函數(shù)fun 統(tǒng)計一個字符串中各個字符的ASCII 碼值之和。前面說了,數(shù)組的名字也是一個指針。在函數(shù)調(diào)用中,當(dāng)把str作為實(shí)參傳遞給形參s 后,實(shí)際是把str 的值傳遞給了s,s 所指向的地址就和str 所指向的地址一致,但是str 和s 各自占用各自的存儲空間。在函數(shù)體內(nèi)對s 進(jìn)行自加1 運(yùn)算,并不意味著同時對str 進(jìn)行了自加1 運(yùn)算。


    八、指針類型轉(zhuǎn)換
    當(dāng)我們初始化一個指針或給一個指針賦值時,賦值號的左邊是一個指針,賦值號的右邊是一個指針表達(dá)式。在我們前面所舉的例子中,絕大多數(shù)情況下,指針的類型和指針表達(dá)式的類型是一樣的,指針?biāo)赶虻念愋秃椭羔槺磉_(dá)式所指向的類型是一樣的。
    例十五:

    float f=12.3; ?
    float *fptr=&f; ?
    int *p;
    在上面的例子中,假如我們想讓指針p 指向?qū)崝?shù)f,應(yīng)該怎么辦?
    是用下面的語句嗎?
    p=&f;
    不對。因?yàn)橹羔榩 的類型是int *,它指向的類型是int。表達(dá)式&f 的結(jié)果是一個指針,指針的類型是float *,它指向的類型是float。
    兩者不一致,直接賦值的方法是不行的。至少在我的MSVC++6.0 上,對指針的賦值語句要求賦值號兩邊的類型一致,所指向的類型也一致,其它的編譯器上我沒試過,大家可以試試。為了實(shí)現(xiàn)我們的目的,需要進(jìn)行"強(qiáng)制類型轉(zhuǎn)換":
    p=(int*)&f;
    如果有一個指針p,我們需要把它的類型和所指向的類型改為TYEP *TYPE, 那么語法格式是: (TYPE *)p;
    這樣強(qiáng)制類型轉(zhuǎn)換的結(jié)果是一個新指針,該新指針的類型是TYPE *,它指向的類型是TYPE,它指向的地址就是原指針指向的地址。
    而原來的指針p 的一切屬性都沒有被修改。(切記)
    一個函數(shù)如果使用了指針作為形參,那么在函數(shù)調(diào)用語句的實(shí)參和形參的結(jié)合過程中,必須保證類型一致,否則需要強(qiáng)制轉(zhuǎn)換
    例十六:

    ? ? void fun(char*); ?
    ? ? int a=125,b; ?
    ? ? fun((char*)&a); ?
    ? ? void fun(char*s) ?
    ? ? { ?
    ? ? ? ? charc; ?
    ? ? ? ? c=*(s+3);*(s+3)=*(s+0);*(s+0)=c; ?
    ? ? ? ? c=*(s+2);*(s+2)=*(s+1);*(s+1)=c; ?
    ? ? } ?
    注意這是一個32 位程序,故int 類型占了四個字節(jié),char 類型占一個字節(jié)。函數(shù)fun 的作用是把一個整數(shù)的四個字節(jié)的順序來個顛倒。注意到了嗎?在函數(shù)調(diào)用語句中,實(shí)參&a 的結(jié)果是一個指針,它的類型是int *,它指向的類型是int。形參這個指針的類型是char *,它指向的類型是char。這樣,在實(shí)參和形參的結(jié)合過程中,我們必須進(jìn)行一次從int *類型到char *類型的轉(zhuǎn)換。
    結(jié)合這個例子,我們可以這樣來
    想象編譯器進(jìn)行轉(zhuǎn)換的過程:編譯器先構(gòu)造一個臨時指針char *temp,然后執(zhí)行temp=(char *)&a,最后再把temp 的值傳遞給s。所以最后的結(jié)果是:s 的類型是char *,它指向的類型是char,它指向的地址就是a 的首地址。
    我們已經(jīng)知道,指針的值就是指針指向的地址,在32 位程序中,指針的值其實(shí)是一個32 位整數(shù)。
    那可不可以把一個整數(shù)當(dāng)作指針的值直接賦給指針呢?就象下面的語句:

    ? ? unsigned int a; ?
    ? ? TYPE *ptr; //TYPE 是int,char 或結(jié)構(gòu)類型等等類型。 ?
    ? ? a=20345686; ?
    ? ? ptr=20345686; //我們的目的是要使指針ptr 指向地址20345686 ?
    ? ? ??
    ? ? ptr=a; //我們的目的是要使指針ptr 指向地址20345686 ?
    ? ? //編譯一下吧。結(jié)果發(fā)現(xiàn)后面兩條語句全是錯的。那么我們的目的就不能達(dá)到了嗎?不,還有辦法: ?
    ? ? unsigned int a; ?
    ? ? TYPE *ptr; //TYPE 是int,char 或結(jié)構(gòu)類型等等類型。 ?
    ? ? a=N //N 必須代表一個合法的地址; ?
    ? ? ptr=(TYPE*)a; //呵呵,這就可以了。 ?
    嚴(yán)格說來這里的(TYPE *)和指針類型轉(zhuǎn)換中的(TYPE *)還不一樣。這里的(TYPE*)的意思是把無符號整數(shù)a 的值當(dāng)作一個地址來看待。上面強(qiáng)調(diào)了a 的值必須代表一個合法的地址,否則的話,在你使用ptr 的時候,就會出現(xiàn)非法操作錯誤。想想能不能反過來,把指針指向的地址即指針的值當(dāng)作一個整數(shù)取出來。完全可以。下面的例子演示了把一個指針的值當(dāng)作一個整數(shù)取出來,然后再把這個整數(shù)當(dāng)作一個地址賦給一個指針:
    例十七:

    int a=123,b; ?
    int *ptr=&a; ?
    char *str; ?
    b=(int)ptr; //把指針ptr 的值當(dāng)作一個整數(shù)取出來。 ?
    str=(char*)b; //把這個整數(shù)的值當(dāng)作一個地址賦給指針str
    現(xiàn)在我們已經(jīng)知道了,可以把指針的值當(dāng)作一個整數(shù)取出來,也可以把一個整數(shù)值當(dāng)作地址賦給一個指針。

    九、指針的安全問題
    看下面的例子:
    例十八:

    char s='a'; ?
    int *ptr; ?
    ptr=(int *)&s; ?
    *ptr=1298;
    指針ptr 是一個int *類型的指針,它指向的類型是int。它指向的地址就是s 的首地址。在32 位程序中,s 占一個字節(jié),int 類型占四個字節(jié)。最后一條語句不但改變了s 所占的一個字節(jié),還把和s 相臨的高地址方向的三個字節(jié)也改變了。這三個字節(jié)是干什么的?只有編譯程序知道,而寫程序的人是不太可能知道的。也許這三個字節(jié)里存儲了非常重要的數(shù)據(jù),也許這三個字節(jié)里正好是程序的一條代碼,而由于你對指針的馬虎應(yīng)用,這三個字節(jié)的值被改變了!這會造成崩潰性的錯誤。
    讓我們再來看一例:
    例十九:

    char a; ?
    int *ptr=&a; ?
    ptr++; ?
    *ptr=115;
    該例子完全可以通過編譯,并能執(zhí)行。但是看到?jīng)]有?第3 句對指針ptr 進(jìn)行自加1 運(yùn)算后,ptr 指向了和整形變量a 相鄰的高地址方向的一塊存儲區(qū)。這塊存儲區(qū)里是什么?我們不知道。有可能它是一個非常重要的數(shù)據(jù),甚至可能是一條代碼。
    而第4 句竟然往這片存儲區(qū)里寫入一個數(shù)據(jù)!這是嚴(yán)重的錯誤。所以在使用指針時,程序員心里必須非常清楚:我的指針究竟指向了哪里。在用指針訪問數(shù)組的時候,也要注意不要超出數(shù)組的低端和高端界限,否則也會造成類似的錯誤。
    在指針的強(qiáng)制類型轉(zhuǎn)換:ptr1=(TYPE *)ptr2 中,如果sizeof(ptr2的類型)大于sizeof(ptr1 的類型),那么在使用指針ptr1 來訪問ptr2所指向的存儲區(qū)時是安全的。如果sizeof(ptr2 的類型) 小于sizeof(ptr1 的類型),那么在使用指針ptr1 來訪問ptr2 所指向的存儲區(qū)時是不安全的。至于為什么,讀者結(jié)合例十八來想一想,應(yīng)該會明白的。
    ?

    總結(jié)

    以上是生活随笔為你收集整理的C语言指针祥讲的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    国产午夜精品一区二区三区在线观看 | 国产成人av网站 | 91麻豆网站 | 99色视频在线 | 久久国产综合视频 | 国产一线天在线观看 | 九九热久久久 | 东方av免费在线观看 | 欧美一区二区精品在线 | 草久在线| 91亚洲在线观看 | 天天精品视频 | 在线观看黄色免费视频 | 国产在线观看,日本 | 天天综合区 | 久99久久| 国产区免费在线 | 久久精品艹 | 精品影院一区二区久久久 | 亚洲精品视频www | 96精品高清视频在线观看软件特色 | 免费毛片一区二区三区久久久 | 日韩av免费观看网站 | 中文一二区 | 手机在线免费av | 九九电影在线 | 亚洲最新av | 国产精品毛片一区视频播不卡 | 日日摸日日添日日躁av | 在线91av | 激情五月***国产精品 | 黄网站污 | 午夜av免费在线观看 | 丁香五月亚洲综合在线 | 天天操天天射天天 | 一本一道久久a久久精品蜜桃 | 国产日韩欧美在线影视 | 中文超碰字幕 | 国产精品久久久久aaaa九色 | 中文字幕高清在线 | 黄色一级性片 | 日韩欧美综合视频 | 久草视频国产 | 探花视频免费在线观看 | 国产美女在线精品免费观看 | 999视频在线播放 | 欧美激情综合五月色丁香 | 亚洲精品视频在线观看网站 | 在线看国产日韩 | 国产成人av电影在线观看 | 黄色一级免费 | 91在线超碰 | 国产黑丝一区二区三区 | 久久综合中文字幕 | 国产精品 9999 | 日韩伦理片一区二区三区 | 999毛片| www.五月天激情 | 色婷婷av国产精品 | 亚洲毛片在线观看. | 日韩精品亚洲专区在线观看 | 美女国产在线 | 成人性生交大片免费看中文网站 | 美女av免费 | 国产成人黄色av | av黄色国产| 插综合网 | 丁香国产视频 | 久久视频在线免费观看 | 欧美成人久久 | 欧美日本在线观看视频 | 国产精品久久久久av | 婷婷丁香色 | 婷婷久操 | 99久久激情视频 | 国产视频69 | 久久久.com | 在线a人片免费观看视频 | 在线视频中文字幕一区 | av短片在线观看 | 久久亚洲私人国产精品 | 免费在线观看一级片 | 免费成人av在线 | 日韩精品免费在线视频 | 国产成人99av超碰超爽 | 日日夜夜天天人人 | 99在线免费观看视频 | 久久一区二区三区超碰国产精品 | se婷婷| 国产精品久久久久久久久久免费看 | 免费av看片| 操操操日日日干干干 | 日本在线中文 | 日韩高清免费在线 | 国产黄色免费 | 日韩欧美高清一区二区 | 少妇bbw撒尿| 丁香网婷婷 | 99精品视频播放 | 日本在线精品视频 | 国产黄色在线观看 | www亚洲一区 | 国产污视频在线观看 | 免费在线观看污 | 色wwwww| 国产精品免费观看国产网曝瓜 | 99久久久久久久久久 | av在线一级 | 免费在线激情视频 | 888av| 欧美日韩18 | 中文字幕在线日亚洲9 | 国产第一二区 | av大全在线播放 | 欧美精品被 | 国产尤物一区二区三区 | 999色视频 | 麻豆视频免费播放 | 99视频在线免费播放 | 99精品久久久 | 国产福利91精品一区 | 在线看免费 | 欧美aa在线 | 久草在线最新免费 | 久产久精国产品 | 中文字幕在线字幕中文 | 看av免费 | 91精品一区二区三区蜜桃 | 精品一区91 | 国产香蕉久久精品综合网 | 亚洲一区日韩 | 日本不卡一区二区 | 国产精品岛国久久久久久久久红粉 | 97香蕉视频| 亚洲精品国精品久久99热一 | 日本中文字幕观看 | 国产 视频 高清 免费 | 国产99中文字幕 | 国产午夜精品一区 | 免费日韩 精品中文字幕视频在线 | 在线观看aa| 免费视频xnxx com | 丁香伊人网| 又黄又爽又刺激的视频 | 黄色成人影院 | 国产黄色av网站 | 天天射综合网视频 | 久久人人添人人爽添人人88v | 99在线国产 | 91av福利视频 | 国产精品欧美久久久久天天影视 | 91色网址| 天天操夜夜叫 | 欧洲激情在线 | 操一草| a视频在线观看免费 | 国产精品免费小视频 | 久久久午夜影院 | 久久久久免费精品国产小说色大师 | 中文字幕在线观看一区二区三区 | 91资源在线| 91在线视频观看免费 | 国产成人精品综合久久久 | 国产精品 9999| av在线播放亚洲 | 色偷偷88欧美精品久久久 | 在线播放视频一区 | 精品国产99国产精品 | 在线观看网站你懂的 | 欧美国产在线看 | 91福利区一区二区三区 | 一区二区视频网站 | 国产99久久九九精品免费 | 亚洲男人天堂a | 午夜国产一区二区 | 欧美在线91| 亚洲日本va在线观看 | 亚洲精品中文字幕视频 | 国产成人精品电影久久久 | 国产精品成人品 | 国产裸体bbb视频 | 精品999久久久 | 中文字幕二区在线观看 | 最新一区二区三区 | 99热99| 96亚洲精品久久 | 久久99精品久久久久久秒播蜜臀 | 天天操综| 99热这里只有精品在线观看 | 天天操,夜夜操 | 亚洲一区二区三区四区精品 | 国产69精品久久久久99尤 | 日韩精品久久久久 | 欧美日韩国产二区三区 | 午夜视频不卡 | 国产精品一区二区久久精品 | 又色又爽又激情的59视频 | 久久艹艹| 国产成人精品免高潮在线观看 | 日本护士撒尿xxxx18 | 91| 66av99精品福利视频在线 | 成人理论在线观看 | 四虎国产精品免费 | 色欧美成人精品a∨在线观看 | 色播六月天 | 伊人狠狠操 | 久久久国产精品人人片99精片欧美一 | 91麻豆精品国产91久久久更新时间 | 国产一线在线 | 99久久精品免费看国产麻豆 | 丝袜网站在线观看 | 中文字幕在线观看你懂的 | 天天干天天拍天天操 | 91精品在线免费观看视频 | 91看片在线免费观看 | 综合色亚洲 | 在线国产视频 | 少妇做爰k8经典 | 国产精品福利在线 | 国产精品日韩在线 | av观看免费在线 | 国产在线高清视频 | 在线观看精品一区 | 成人av视屏 | 国产少妇在线观看 | 在线观看黄网站 | 久久免费公开视频 | 久久超级碰视频 | 国产成人333kkk| 特级毛片在线免费观看 | 一区二区三区日韩视频在线观看 | 久久成人福利 | 911在线| 在线观看一区二区视频 | 久久精品国产99国产 | 在线午夜电影神马影院 | 韩日精品在线观看 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 国产精品一区二区久久久 | 一区二区伦理电影 | 国产亚洲精品久久 | 日韩素人在线观看 | 色a4yy| 99精品美女 | 精品日韩av| 久章草在线观看 | 精品国产一区二区三区久久久蜜臀 | 2023国产精品自产拍在线观看 | 亚洲在线视频免费 | 啪啪资源| 激情五月***国产精品 | 天天激情 | av一级免费 | 久久久久www | 手机av网站 | 91香蕉视频黄色 | 狠狠干2018 | 六月婷操 | 久久久精品电影 | 国产视频精选 | 精品国产理论 | 欧美日韩中文在线视频 | 亚洲欧美成人综合 | 久久久久久久久久久国产精品 | 一级黄色片在线免费观看 | 国产成人一区二区啪在线观看 | 91九色精品国产 | 久久久久久久免费观看 | 亚洲 欧美 另类人妖 | 久久视屏网 | 国产精品爽爽久久久久久蜜臀 | 天天操夜夜想 | 91av在线免费视频 | 狠狠色丁香婷婷综合久久片 | 视频在线观看99 | 日韩理论在线视频 | 99视频偷窥在线精品国自产拍 | 黄色影院在线免费观看 | 国产精品美女久久久久久网站 | 久久精品中文字幕免费mv | 欧美怡红院 | 国色天香av | 91香蕉视频色版 | 国产精品久久久久久久久久ktv | 91看毛片| 99热精品在线 | www.色综合.com| 夜夜夜夜猛噜噜噜噜噜初音未来 | 开心色激情网 | 国产专区精品 | 国产精品一区一区三区 | 国产色在线视频 | 欧美久久精品 | a黄色片在线观看 | 91免费在线看片 | 国产视频亚洲视频 | 黄色小说视频在线 | 97超在线视频 | 91精品国产综合久久婷婷香蕉 | 日韩欧美高清一区二区三区 | 狠狠狠色丁香综合久久天下网 | 黄色免费电影网站 | 亚洲涩涩色 | 国产欧美中文字幕 | 1024手机在线看 | 成人观看 | 最新av网址在线观看 | 久久国语| 在线观看中文字幕网站 | 欧美a级片免费看 | 99精品国产福利在线观看免费 | 日韩精品一区二区免费 | 久久综合久久综合这里只有精品 | 丁香六月天 | 天天综合色网 | 国产色影院 | 免费在线观看av片 | 91亚州 | 国产天天综合 | 日韩二区三区 | 久久草网站 | 成年人免费在线观看 | 91香蕉视频黄 | 免费观看午夜视频 | 亚洲一区二区精品 | 日韩一区二区在线免费观看 | www.久久视频 | 国产精久久 | a级国产片 | 午夜精品一区二区三区可下载 | 在线观看v片 | 国产精品专区在线观看 | 久久免费高清视频 | 91亚洲精品在线 | 国产一级淫片在线观看 | 成人影视免费看 | 国产精品一区二区三区在线免费观看 | 婷婷久操 | 在线一二区 | 亚洲精品中文字幕视频 | 欧美日韩高清免费 | 国产精品久久久久久久久久久杏吧 | www日韩精品| 视频一区亚洲 | 日韩视频免费 | av理论电影| 久久久精品免费观看 | 久久久午夜精品福利内容 | 亚洲 欧洲 国产 日本 综合 | 亚洲高清av在线 | 亚洲撸撸| 亚洲1级片| 亚洲区另类春色综合小说校园片 | 国产精品美女久久久久久久 | 黄色特级一级片 | www178ccom视频在线 | 日韩精品一区二区三区电影 | 久久久久国产a免费观看rela | 一级性视频 | 在线va视频 | 久久久国产精品一区二区中文 | 国产精品区在线观看 | av网站免费线看精品 | 亚洲精品网址在线观看 | 91精品资源| av在线免费观看不卡 | 天天射天天艹 | 国产99久久精品 | 狠狠狠狠狠操 | 婷婷久月 | av视屏在线播放 | 天天草天天 | 超碰人人av | 九九九九九九精品任你躁 | 中文字幕中文字幕中文字幕 | 久久视频免费在线 | 在线一区av | 国内外成人在线视频 | 男女激情麻豆 | 久草在线免费电影 | 亚州欧美精品 | 国产一级在线看 | av在线免费播放 | 亚洲免费视频在线观看 | 久久精品一级片 | 亚洲美女精品区人人人人 | 免费黄色在线 | 色天天 | 在线亚洲精品 | 在线免费黄色片 | 婷婷色中文字幕 | 日韩午夜电影 | 91麻豆精品国产午夜天堂 | 欧美 日韩 国产 成人 在线 | 有码视频在线观看 | 欧美精品在线观看 | 日本激情动作片免费看 | 999视频网| 日韩视频中文 | 在线a亚洲视频播放在线观看 | 精品国内自产拍在线观看视频 | 超碰97久久 | 香蕉成人在线视频 | 国产色久 | 日韩欧美视频免费在线观看 | 婷婷色六月天 | 在线观看视频免费播放 | 香蕉视频4aa | 午夜色影院 | 亚洲第五色综合网 | 中文av免费 | www免费看| 中文字幕av免费观看 | 四虎影视8848aamm| 999国内精品永久免费视频 | 国产成人性色生活片 | 欧美精品一区二区在线观看 | 国产中文字幕视频在线观看 | 久久久免费在线观看 | 夜夜夜影院| 天天色天天射天天综合网 | 婷婷色网视频在线播放 | 91最新国产 | 偷拍视频一区 | 亚洲国产三级 | 久久精品欧美一区二区三区麻豆 | 波多在线视频 | 色视频 在线 | 日韩理论在线视频 | 亚洲国产成人高清精品 | 久久精品这里热有精品 | 欧美一级片在线 | 91九色国产视频 | 精品网站999www | 日本mv大片欧洲mv大片 | 天天操天天爽天天干 | 久久激情视频免费观看 | 最近日本中文字幕 | 久久看免费视频 | 午夜精品剧场 | 草久久影院 | 成人免费观看完整版电影 | 亚洲一区二区视频在线播放 | 国产精品毛片一区二区 | 少妇自拍av | 一区二区三区高清在线观看 | 欧洲一区二区三区精品 | 草樱av| 97色狠狠 | 91精品少妇偷拍99 | 一本一道久久a久久精品蜜桃 | 婷婷丁香综合 | 亚洲 精品在线视频 | 插久久| 日本中文乱码卡一卡二新区 | 免费网站看v片在线a | 69欧美视频| 久久天天躁狠狠躁亚洲综合公司 | 最近免费中文字幕大全高清10 | 一区二区三区国产欧美 | 精品久久免费看 | 国内外成人免费在线视频 | 国产亚洲在 | 国产精品区二区三区日本 | 欧美在线1 | 天天综合91| 午夜91视频 | 在线国产黄色 | 欧美日韩在线免费观看 | 狠狠躁日日躁狂躁夜夜躁av | 国产精品麻豆果冻传媒在线播放 | 国产精品无 | 日韩av视屏在线观看 | 国产色女| 国内精品久久久久久 | 精品国产一区二 | 日韩av一区二区在线 | 91av原创 | 2022国产精品视频 | 免费黄a| 97在线观看免费高清 | 麻豆传媒电影在线观看 | 丁香花在线视频观看免费 | 日韩一级黄色av | 国产专区视频在线 | 亚洲精品在线观看不卡 | 国产精品久久久久久久久久东京 | 国产成人99久久亚洲综合精品 | 国产玖玖精品视频 | 成人小视频免费在线观看 | 国产日产精品久久久久快鸭 | 奇米四色影狠狠爱7777 | 91在线永久| 国产在线p | 一个色综合网站 | 成人国产精品久久久久久亚洲 | 香蕉视频最新网址 | 亚洲小视频在线观看 | 久久久久久久久久久久久久av | 免费观看视频的网站 | 日韩一区二区三区免费视频 | 国产97免费 | 国产一区在线播放 | 中文字幕在线中文 | av短片在线 | 久久伦理 | 欧美视频www | 免费观看一区二区 | 国产免费作爱视频 | 久久精品电影 | 国产 一区二区三区 在线 | 青青射| 蜜臀精品久久久久久蜜臀 | 久久视频在线 | 免费网站观看www在线观看 | 国产成人精品一区二区三区 | 黄色片视频在线观看 | 色在线网站 | 国产91aaa | 97热在线观看 | 国产黄色精品网站 | 国产精品视频免费 | 精品免费一区二区三区 | 成年人免费看片网站 | 亚洲精品国产精品国自产在线 | 麻豆视传媒官网免费观看 | 1024手机看片国产 | 欧美日韩国产一区二区三区 | 久草视频免费看 | 国产又粗又猛又爽又黄的视频先 | 黄色av免费看 | 久久久久久国产精品免费 | 亚洲三级性片 | 超碰在线99 | 国产美女网 | 色视频网站在线 | 国产精品不卡一区 | 久久精品视频在线观看 | 黄色av网站在线观看免费 | 欧美久久久久久久久久 | 97视频在线 | 免费91麻豆精品国产自产在线观看 | 国产裸体视频网站 | 亚洲精品久久久蜜臀下载官网 | 色综合久久网 | 精品视频9999 | 伊人永久| 国产福利91精品张津瑜 | 久久综合毛片 | 成人高清在线观看 | 在线国产视频一区 | 狠狠的日 | 久久综合丁香 | 亚洲国产资源 | 免费日韩 精品中文字幕视频在线 | 日本公妇在线观看 | 亚洲欧美国产精品久久久久 | 精品视频在线看 | 中文字幕av最新更新 | 精品一区二区日韩 | 亚洲精选视频免费看 | 精品免费视频. | 国产精品大片免费观看 | 国产视频在线播放 | 久99视频| 探花在线观看 | 亚洲精品国产精品乱码不99热 | 成人久久久久 | 麻豆久久久| 国产手机在线观看 | 久久久久久久99精品免费观看 | 在线视频一二三 | 欧美成人999 | 亚洲成人高清在线 | 国产精品成人国产乱 | 亚洲爱爱视频 | 欧美另类巨大 | 久久999久久 | 91激情小视频| 国产视频资源 | 99热只有精品在线观看 | 日韩精品电影在线播放 | 精品美女在线观看 | 成人av在线影院 | 国产一级淫片在线观看 | 正在播放久久 | 日韩精品不卡在线 | 久久亚洲成人网 | 久久99精品国产99久久6尤 | 亚洲片在线观看 | 精品在线观 | 免费看黄色小说的网站 | 亚洲黑丝少妇 | 亚洲国产一区在线观看 | 91片黄在线观看 | 久99久中文字幕在线 | 97视频在线免费播放 | 一区二区三区不卡在线 | 国产精品久久久久久久久久久久午夜片 | 成人黄色国产 | 天堂麻豆| 亚洲精品国产精品99久久 | 日韩欧美视频在线播放 | 在线免费观看欧美日韩 | 中文字幕在线免费观看视频 | www.狠狠插.com| 国产成人精品一区二区在线观看 | 亚洲免费永久精品国产 | 成人亚洲综合 | 伊人五月天综合 | 99热都是精品| 亚洲精品美女在线 | 日本精品视频一区 | 久久久2o19精品 | 国产99久久久精品视频 | 操少妇视频 | 91传媒在线观看 | 久久国产精品免费看 | 中文字幕 第二区 | 天天玩天天操天天射 | 樱空桃av | 亚洲男男gaygay无套同网址 | 中文字幕丝袜美腿 | 国产色a在线观看 | 免费人成网ww44kk44 | 国产成人精品电影久久久 | 国产精品久久99综合免费观看尤物 | 亚洲欧美日本一区二区三区 | av网站手机在线观看 | 91免费黄视频 | 色播五月激情五月 | 热久久免费国产视频 | 激情综合五月天 | 亚洲欧洲一区二区在线观看 | 四虎影视成人精品国库在线观看 | 亚洲一级在线观看 | 综合天堂av久久久久久久 | 亚洲国产精品一区二区久久,亚洲午夜 | 久久99精品国产91久久来源 | 日韩一区二区免费视频 | 五月婷婷亚洲 | 日韩三级在线观看 | 亚洲精品国产精品乱码不99热 | 国产一区二区三区高清播放 | 99精品国产兔费观看久久99 | 99re8这里有精品热视频免费 | 二区在线播放 | 亚洲精品mv在线观看 | 免费看国产一级片 | 97国产一区 | 少妇搡bbbb搡bbb搡aa | 日韩字幕| 色福利网 | av在线免费观看网站 | 久久激情婷婷 | 成人午夜电影网站 | 国产精品18久久久久久久网站 | 97品白浆高清久久久久久 | 国产手机在线播放 | 少妇bbbb搡bbbb桶| 超碰在线中文字幕 | 精品国产aⅴ麻豆 | 国产成人精品久久亚洲高清不卡 | 二区三区av| 能在线看的av | 99综合电影在线视频 | 国产老太婆免费交性大片 | 色在线观看网站 | 国内外激情视频 | 亚洲欧洲日韩在线观看 | 亚洲aⅴ久久精品 | 91夫妻自拍 | 免费看片网址 | 久久亚洲国产精品 | 久久国产精品99国产 | 我要色综合天天 | 国产精品区一区 | 夜夜爽88888免费视频4848 | 天天玩天天干 | 一区 二区电影免费在线观看 | 激情视频国产 | 2024av| 日韩高清一区 | 色就色,综合激情 | 日本激情中文字幕 | 黄色三级视频片 | 国产精品久久久久四虎 | 国产 视频 高清 免费 | 在线天堂中文www视软件 | 91精品国产91 | 国产在线999 | 国产成人一区二区三区免费看 | 国产成人精品国内自产拍免费看 | 亚洲精品黄网站 | 久久精品久久精品久久 | 国产视频久久久 | 午夜久久久精品 | 国产专区精品视频 | 色六月婷婷 | 五月婷av| 麻豆视频成人 | 天天色天天综合 | 午夜精品视频福利 | 在线网址你懂得 | 在线观看黄网 | 午夜精品一区二区国产 | 成人精品一区二区三区中文字幕 | 四虎成人精品永久免费av九九 | 日本bbbb摸bbbb | 91精品色| 免费黄色在线播放 | 一区二区理论片 | 狠狠干 狠狠操 | 久久视讯 | 国产日韩在线视频 | 日日干夜夜草 | 国产精品乱码一区二三区 | 97在线观看免费观看 | 91成人网在线观看 | 日韩a级免费视频 | 国产精品 中文字幕 亚洲 欧美 | 日本一区二区三区免费看 | 欧美一区二区三区在线看 | 国产91影院 | 国产色一区 | 中文国产在线观看 | 久久久www免费电影网 | www.99av | 不卡av免费在线观看 | 欧美日韩视频在线观看一区二区 | 欧美三级在线播放 | 九九免费观看视频 | 久久久久综合视频 | av在线免费在线 | 美女网站免费福利视频 | 国语久久| 97视频亚洲 | 天天爽综合网 | 国产乱码精品一区二区三区介绍 | 狠狠操天天操 | 色在线网站 | 麻豆传媒视频在线免费观看 | 一区二区三区在线观看中文字幕 | 免费网站看v片在线a | 国产精品少妇 | 黄色资源网站 | 免费观看一级视频 | 亚洲精品久久久久www | 伊人天堂av| 96精品视频 | 免费看国产a | 久久精品视频18 | 开心色婷婷 | 日韩黄色在线观看 | 国产精品1区2区 | 97超碰在线久草超碰在线观看 | 精品毛片一区二区免费看 | 久久手机在线视频 | 日本久久久久久久久 | 黄色片视频免费 | 综合中文字幕 | 久久综合五月 | 免费观看av | 欧美国产不卡 | 成人一级免费电影 | 黄在线免费看 | 91在线免费播放 | 黄av免费在线观看 | 久久久综合九色合综国产精品 | 天天干天天操天天操 | 精品视频免费在线 | 国产成人久久精品77777 | 91精品久久香蕉国产线看观看 | 国产精品成人国产乱一区 | 婷婷综合成人 | 91精品网站| 国产一区二区三区黄 | 久久久久久毛片精品免费不卡 | 制服丝袜在线91 | 久久久久激情视频 | 偷拍区另类综合在线 | 国产一区高清在线 | 日韩在线观看视频一区二区三区 | 看黄色91 | 天天干天天射天天插 | 久久免费视频3 | 久久精品一二三区白丝高潮 | 国产精品乱码久久久久久1区2区 | 欧美在线视频免费 | 91色视频 | 国产视频导航 | 在线va视频 | 日韩理论片中文字幕 | 久久久久久不卡 | 久久久国产在线视频 | 色资源二区在线视频 | 88av色 | 九九热国产视频 | 久久精品中文字幕一区二区三区 | 久草新在线 | 特黄色大片 | 久久99精品国产99久久 | 碰碰影院 | 国产精品成人a免费观看 | 国产不卡毛片 | 国产中文字幕第一页 | 精品国产理论 | 欧美精品v国产精品v日韩精品 | 免费看av在线 | 日韩高清在线观看 | 91精品国产自产老师啪 | 欧美日韩性生活 | 91中文字幕永久在线 | 91视频高清免费 | 久久免费在线观看 | 91成年人在线观看 | 97超碰人人澡人人爱学生 | 国产亚洲精品日韩在线tv黄 | 又黄又刺激的网站 | 91九色免费视频 | 99热在线精品观看 | 色婷婷在线视频 | 天天插夜夜操 | 国产精品美女久久久久久久网站 | 午夜电影 电影 | 国产成人久久av | 久久久久久蜜桃一区二区 | 国产精品久久久久久久午夜 | 亚洲少妇久久 | 国产破处在线播放 | 国产高清免费av | 国产精品久久久久一区二区 | 久久婷婷影视 | 97夜夜澡人人爽人人免费 | 午夜精品一区二区三区在线视频 | 国产黄色精品在线 | a√天堂资源 | 天天干人人插 | 麻豆国产网站 | 久久精品成人欧美大片古装 | 日韩一级精品 | 亚洲乱码精品久久久 | 国产网红在线观看 | 国产精品日韩久久久久 | 色吊丝在线永久观看最新版本 | 黄色在线免费观看网址 | 久久一区二区三区日韩 | 久久成人精品电影 | 欧美性猛片, | 天天干天天碰 | 在线免费观看黄色av | 99久久精品免费看国产免费软件 | 亚洲精品一区二区在线观看 | 国内精品在线看 | 黄色大全在线观看 | 中文字幕在线观看第一区 | 色婷婷国产在线 | 超碰人人射 | 9在线观看免费高清完整版 玖玖爱免费视频 | 国产精品成人免费精品自在线观看 | 久草在线免费新视频 | 91在线蜜桃臀 | 国产精品久久久久久a | 国产香蕉97碰碰碰视频在线观看 | 国产高清视频免费最新在线 | 亚洲精品视频在线播放 | 黄av免费| 97在线看片| 国产中文在线视频 | 欧美精品在线一区 | 精品国产乱码 | 亚洲五月激情 | 波多野结衣在线观看一区 | 最新中文字幕在线观看视频 | 国产精品久久久999 国产91九色视频 | 亚洲男人天堂a | 免费黄色av | 99在线精品观看 | 中文字幕在线观看完整 | 免费国产一区二区 | 99视频国产精品免费观看 | 69夜色精品国产69乱 | 91视视频在线直接观看在线看网页在线看 | 欧美在线91 | 亚洲jizzjizz日本少妇 | 在线观看国产日韩 | 天天久久综合 | 国产精品一区二区三区在线免费观看 | 激情综合啪啪 | 美女视频黄网站 | 91片黄在线观看 | 国产在线精品观看 | 日韩免费在线视频 | 黄色小说免费在线观看 | 国产亚州精品视频 | 在线91精品 | 国产精品国产三级在线专区 | 亚洲精品男人天堂 | 国产精品18久久久久vr手机版特色 | 久久 地址 | 欧美一二三视频 | 国产精品久久久 | 中文字幕在线人 | 丁香六月伊人 | 精品一区二区三区电影 | 91九色在线观看 | 亚洲人成人99网站 | 九九九热精品免费视频观看 | 日韩视频在线观看视频 | 久久99久久99精品免视看婷婷 | www一起操 | 色综合在 | 中文字幕一区二区三区在线观看 | 免费观看的av | 99精品国产在热久久下载 | 天天干天天干天天干 | 少妇啪啪av入口 | 色综合天天在线 | 欧美精彩视频在线观看 | 成人黄色电影在线观看 | 国产尤物在线视频 | 亚洲另类视频在线观看 | 欧美极品少妇xbxb性爽爽视频 | 色七七亚洲影院 | 午夜精品久久久久久久久久久 | 国产最新91 | 在线天堂v| 亚洲欧美婷婷六月色综合 | 国产免码va在线观看免费 | 天天干天天干天天射 | 欧美日韩二三区 | 日韩一区二区三区高清在线观看 | 国产麻豆视频网站 | 中文字幕在线观看亚洲 | 中文字幕在线观看免费观看 | 亚洲午夜电影网 | av网站在线观看免费 | 高清不卡一区二区三区 | 久久人人97超碰精品888 | 精品国产免费观看 | 国产精品一区二区久久国产 | 色在线免费 | 亚洲综合色丁香婷婷六月图片 | 99热这里只有精品免费 | 国产一区av在线 | av黄色成人 | 久久久久网址 | 97色婷婷| 99精品免费观看 | 99久久精品免费一区 | www天天操| 日韩精品一区二区三区免费视频观看 | 成人a视频在线观看 | 五月天亚洲综合 | 欧美精品久久 | 久久av福利 | 欧美日韩免费一区二区三区 | 开心激情五月婷婷 | 久久综合狠狠综合久久狠狠色综合 | 日韩一区二区免费视频 | 国产黄色网 | 高清精品视频 | 日本韩国在线不卡 | 国产高清专区 | 久久一区91| 手机在线看片日韩 | 98超碰人人 | 激情网在线视频 | 久久久久久久久影视 | 99色在线观看视频 | 日本精品视频在线观看 | 人人澡av| 久久99视频精品 | 久久九九影院 | 国产成人亚洲在线电影 | 日本护士撒尿xxxx18 | 国产精品21区 | 亚洲成人av在线电影 | 丝袜美腿在线 | 国产精品免费在线播放 | 一本一道久久a久久精品蜜桃 | 免费看av在线| 久久人人爽人人人人片 | 精品久久久久久亚洲综合网站 | 中文字幕专区高清在线观看 | 五月天开心 | 久久天堂影院 | 久久成人精品视频 | 午夜天天操| 日韩视频在线观看免费 | 伊人天堂久久 | 亚州中文av | 天天激情 | 日韩在线观看视频网站 | 午夜黄色一级片 | 国产麻豆视频 | 91人人插|