九九99在线视频-九九99香蕉在线视频美国毛片-九九99热久久精品在线9-九九99热-九九99久久精品在免费线bt-九九99久久


曙海教育集團(tuán)論壇開(kāi)發(fā)語(yǔ)言培訓(xùn)專區(qū)VB語(yǔ)言 → VB真是想不到系列之二:VB《葵花寶典》--指針技


  共有10019人關(guān)注過(guò)本帖樹(shù)形打印

主題:VB真是想不到系列之二:VB《葵花寶典》--指針技

美女呀,離線,留言給我吧!
wangxinxin
  1樓 個(gè)性首頁(yè) | 博客 | 信息 | 搜索 | 郵箱 | 主頁(yè) | UC


加好友 發(fā)短信
等級(jí):青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊(cè):2010-11-12 11:08:23
VB真是想不到系列之二:VB《葵花寶典》--指針技  發(fā)帖心情 Post By:2010-12-14 12:35:56

《VB真是想不到系列》
    每次看大師的東西到了精彩之處,我就會(huì)拍案叫絕:"哇噻,真是想不到!"。在經(jīng)過(guò)很多次這種感慨之后,我發(fā)現(xiàn)只要我們動(dòng)了腦筋,我們自己也能有讓別人想不到的東西。于是想到要把這些想不到的東拿出來(lái)和大家一起分享,希望拋磚引玉,能引出更多讓人想不到的東西。
   
                  VB真是想不到系列之二:VB《葵花寶典》--指針技術(shù)
關(guān)鍵字:VB、指針、動(dòng)態(tài)內(nèi)存分配、效率、安全
難度:中級(jí)至高級(jí)
要求:熟悉VB,掌握基本的C,了解匯編,了解內(nèi)存分配原理。
    想當(dāng)年?yáng)|方不敗,黑木崖密室一戰(zhàn),僅憑一根繡花針獨(dú)戰(zhàn)四大高手,神出鬼沒(méi),堪稱天下武林第一高手。若想成為VB里的東方不敗,熟習(xí)VB《葵花寶典》,掌握VB指針技術(shù),乃是不二的法門(mén)。
    欲練神功,引刀……,其實(shí)掌握VB指針技術(shù),并不需要那么痛苦。因?yàn)檎f(shuō)穿了,也就那么幾招,再勤加練習(xí),終可至神出鬼沒(méi)之境。廢話少說(shuō),讓我們先從指針的定義說(shuō)起。
   
    一、指針是什么?
    不需要去找什么標(biāo)準(zhǔn)的定義,它就是一個(gè)32位整數(shù),在C語(yǔ)言和在VB里都可以用Long類型來(lái)表示。在32位Windows平臺(tái)下它和普通的32位長(zhǎng)整型數(shù)沒(méi)有什么不同,只不過(guò)它的值是一個(gè)內(nèi)存地址,正是因?yàn)檫@個(gè)整數(shù)象針一樣指向一個(gè)內(nèi)存地址,所以就有了指針的概念。
    有統(tǒng)計(jì)表明,很大一部分程序缺陷和內(nèi)存的錯(cuò)誤訪問(wèn)有關(guān)。正是因?yàn)橹羔樦苯雍蛢?nèi)存打交道,所以指針一直以來(lái)被看成一個(gè)危險(xiǎn)的東西。以至于不少語(yǔ)言,如著名的JAVA,都不提供對(duì)指針操作的支持,所有的內(nèi)存訪問(wèn)方面的處理都由編譯器來(lái)完成。而象C和C++,指針的使用則是基本功,指針給了程序員極大的自由去隨心所欲地處理內(nèi)存訪問(wèn),很多非常巧妙的東西都要依靠指針技術(shù)來(lái)完成。
    關(guān)于一門(mén)高級(jí)的程序設(shè)計(jì)語(yǔ)言是不是應(yīng)該取消指針操作,關(guān)于沒(méi)有指針操作算不算一門(mén)語(yǔ)言的優(yōu)點(diǎn),我在這里不討論,因?yàn)榛ヂ?lián)網(wǎng)上關(guān)于這方面的沒(méi)有結(jié)果的討論,已經(jīng)造成了占用幾個(gè)GB的資源。無(wú)論最終你是不是要下定決心修習(xí)指針技術(shù)《葵花寶典》,了解這門(mén)功夫總是有益處的。
    注意:在VB里,官方是不鼓勵(lì)使用什么指針的,本文所講的任何東西你都別指望取得官方的技術(shù)支持,一切都要靠我們自己的努力,一切都更刺激!
    讓我們開(kāi)始神奇的VB指針探險(xiǎn)吧!

 

   順便提一下,聽(tīng)說(shuō)VB.NET里沒(méi)有這幾個(gè)函數(shù),但只要還能調(diào)用API,我們就可以試試上面的幾個(gè)聲明,這樣在VB.NET里我們一樣可以進(jìn)行指針操作。
    但是請(qǐng)注意,如果通過(guò)API調(diào)用來(lái)使用VarPtr,整個(gè)程序二SwapPtr將比原來(lái)使用內(nèi)置VarPtr函數(shù)時(shí)慢6倍。)
    如果你喜歡刨根問(wèn)底,那么下面就是VarPtr函數(shù)在C和匯編語(yǔ)言里的樣子:
    在C里樣子是這樣的:
    long VarPtr(void* pv){
        return (long)pv;
    }
    所對(duì)就的匯編代碼就兩行:
    mov         eax,dword ptr [esp+4]
    ret         4           '彈出棧里參數(shù)的值并返回。
    之所以讓大家了解VarPtr的具體實(shí)現(xiàn),是想告訴大家它的開(kāi)銷(xiāo)并不大,因?yàn)樗鼈儾贿^(guò)兩條指令,即使加上參數(shù)賦值、壓棧和調(diào)用指令,整個(gè)獲取指針的過(guò)程也就六條指令。當(dāng)然,同樣的功能在C語(yǔ)言里,由于語(yǔ)言的直接支持,僅需要一條指令即可。但在VB里,它已經(jīng)算是最快的函數(shù)了,所以我們完全不用擔(dān)心使用VarPtr會(huì)讓我們失去效率!速度是使用指針技術(shù)的根本要求。
    一句話,VarPtr返回的是變量所在處的內(nèi)存地址,也可以說(shuō)返回了指向變量?jī)?nèi)存位置的指針,它是我們?cè)赩B里處理指針最重要的武器之一。

3、ByVal和ByRef
    ByVal傳遞的參數(shù)值,而B(niǎo)yRef傳遞的參數(shù)的地址。在這里,我們不用去區(qū)別傳指針/傳地址/傳引用的不同,在VB里,它們根本就是一個(gè)東西的三種不同說(shuō)法,即使VB的文檔里也有地方在混用這些術(shù)語(yǔ)(但在C++里的確要區(qū)分指針和引用)
    初次接觸上面的程序二SwapPtr的朋友,一定要搞清在里面的CopyMemory調(diào)用中,在什么地方要加ByVal,什么地方不加(不加ByVal就是使用VB缺省的ByRef)
    準(zhǔn)確的理解傳值和傳地址(指針)的區(qū)別,是在VB里正確使用指針的基礎(chǔ)。
    現(xiàn)在一個(gè)最簡(jiǎn)單的實(shí)驗(yàn)來(lái)看這個(gè)問(wèn)題,如下面的程序三:
【程序三】:'體會(huì)ByVal和ByRef
    Sub TestCopyMemory()
        Dim k As Long
        k = 5
Note:   CopyMemory ByVal VarPtr(k), 40000, 4
        Debug.Print k
    End Sub
    上面標(biāo)號(hào)Note處的語(yǔ)句的目的,是將k賦值為40000,等同于語(yǔ)句k=40000,你可以在"立即"窗口試驗(yàn)一下,會(huì)發(fā)現(xiàn)k的值的確成了40000。
    實(shí)際上上面這個(gè)語(yǔ)句,翻譯成白話,就是從保存常數(shù)40000的臨時(shí)變量處拷貝4個(gè)字節(jié)到變量k所在的內(nèi)存中。
    現(xiàn)在我們來(lái)改變一個(gè)Note處的語(yǔ)句,若改成下面的語(yǔ)句:
Note2:   CopyMemory ByVal VarPtr(k), ByVal 40000, 4
    這句話的意思就成了,從地址40000拷貝4個(gè)字節(jié)到變量k所在的內(nèi)存中。由于地址40000所在的內(nèi)存我們無(wú)權(quán)訪問(wèn),操作系統(tǒng)會(huì)給我們一個(gè)Access Violation內(nèi)存越權(quán)訪問(wèn)錯(cuò)誤,告訴我們"試圖讀取位置0x00009c40處內(nèi)存時(shí)出錯(cuò),該內(nèi)存不能為'Read'"。
    我們?cè)俑某扇缦碌恼Z(yǔ)句看看。
Note3:   CopyMemory VarPtr(k), 40000, 4
    這句話的意思就成了,從保存常數(shù)40000的臨時(shí)變量處拷貝4個(gè)字節(jié)到到保存變量k所在內(nèi)存地址值的臨時(shí)變量處。這不會(huì)出出內(nèi)存越權(quán)訪問(wèn)錯(cuò)誤,但k的值并沒(méi)有變。
    我們可以把程序改改以更清楚的休現(xiàn)這種區(qū)別,如下面的程序四:
【程序四】:'看看我們的東西被拷貝到哪兒去了
    Sub TestCopyMemory()
        Dim i As Long, k As Long
        k = 5
        i = VarPtr(k)
NOTE4:  CopyMemory i, 40000, 4
        Debug.Print k
        Debug.Print i
        i = VarPtr(k)
NOTE5:  CopyMemory ByVal i, 40000, 4
        Debug.Print k
    End Sub

程序輸出:
5
40000
40000
    由于NOTE4處使用缺省的ByVal,傳遞的是i的地址(也就是指向i的指針),所以常量40000拷貝到了變量i里,因此i的值成了40000,而k的值卻沒(méi)有變化。但是,在NOTE4前有:i=VarPtr(k),本意是要把i本身做為一個(gè)指針來(lái)使用。這時(shí),我們必須如NOTE5那樣用ByVal來(lái)傳遞指針i,由于i是指向變量k的指針,所以最后常量40000被拷貝了變量k里。
    希望你已經(jīng)理解了這種區(qū)別,在后面問(wèn)題的討論中,我還會(huì)再談到它。

4、AddressOf
    它用來(lái)得到一個(gè)指向VB函數(shù)入口地址的指針,不過(guò)這個(gè)指針只能傳遞給API使用,以使得API能回調(diào)VB函數(shù)。
    本文不準(zhǔn)備詳細(xì)討論函數(shù)指針,關(guān)于它的使用請(qǐng)參考VB文檔。

5、拿來(lái)主義。
    實(shí)際上,有了CopyMemory,VarPtr,AddressOf這三把斧頭,我們已經(jīng)可以將C里基本的指針操作拿過(guò)來(lái)了。
    如下面的C程序包括了大部分基本的指針指針操作:
    struct POINT{
        int x; int y;
    };
    int Compare(void* elem1, void* elem2){}
    void PtrDemo(){
    //指針聲明:
        char c = 'X';        //聲明一個(gè)char型變量
        char* pc; long* pl;  //聲明普通指針
        POINT* pPt;          //聲明結(jié)構(gòu)指針
        void* pv;            //聲明無(wú)類型指針
        int (*pfnCastToInt)(void *, void*);//聲明函數(shù)指針:
    //指針賦值:
       pc = &c;              //將變量c的地址值賦給指針pc
       pfnCompare = Compare; //函數(shù)指針賦值。
    //指針取值:
       c = *pc;              //將指針pc所指處的內(nèi)存值賦給變量c
    //用指針賦值:
       *pc = 'Y'             //將'Y'賦給指針pc所指內(nèi)存變量里。
    //指針移動(dòng):
       pc++; pl--;
    }

    這些對(duì)指針操作在VB里都有等同的東西,
    前面討論ByVal和ByRef時(shí)曾說(shuō)過(guò)傳指針和傳地址是一回事,實(shí)際上當(dāng)我們?cè)赩B里用缺省的ByRef聲明函數(shù)參數(shù)時(shí),我們已經(jīng)就聲明了指針。
    如一個(gè)C聲明的函數(shù):long Func(char* pc)
    其對(duì)應(yīng)的VB聲明是:Function Func(pc As Byte) As Long
    這時(shí)參數(shù)pc使用缺省的ByRef傳地址方式來(lái)傳遞,這和C里用指針來(lái)傳遞參數(shù)是一樣。
    那么怎么才能象C里那樣明確地聲明一個(gè)指針呢?
    很簡(jiǎn)單,如前所說(shuō),用一個(gè)32位長(zhǎng)整數(shù)來(lái)表達(dá)指針就行。在VB里就是用Long型來(lái)明確地聲明指針,我們不用區(qū)分是普通指針、無(wú)類型指針還是函數(shù)指針,通通都可用Long來(lái)聲明。而給一個(gè)指針賦值,就是賦給它用VarPar得到的另一個(gè)變量的地址。具體見(jiàn)程序五。
【程序五】:同C一樣,各種指針。
    Type POINT
        X As Integer
        Y As Integer
    End Type
    Public Function Compare(elem1 As Long, elem2 As Long) As Long
    '
    End Function
    Function FnPtrToLong(ByVal lngFnPtr As Long) As Long
        FnPtrToLong = lngFnPtr
    End Function
    Sub PtrDemo()
       Dim l As Long, c As Byte, ca() As Byte, Pt As POINT
       Dim pl As Long, pc As Long, pv As Long, pPt As Long, pfnCompare As Long
       c = AscB("X")
       pl = VarPtr(l)     '對(duì)應(yīng)C里的long、int型指針
       pc = VarPtr(c)     '對(duì)應(yīng)char、short型指針
       pPt = VarPtr(Pt)   '結(jié)構(gòu)指針
       pv = VarPtr(ca(0)) '字節(jié)數(shù)組指針,可對(duì)應(yīng)任何類型,也就是void*
       pfnCompare = FnPtrToLong(AddressOf Compare) '函數(shù)指針
       CopyMemory c, ByVal pc, LenB(c)   '用指針取值
       CopyMemory ByVal pc, AscB("Y"), LenB(c) '用指針賦值
       pc = pc + LenB(c) : pl = pl - LenB(l)   '指針移動(dòng)
    End Sub
    我們看到,由于VB不直接支持指針操作,在VB里用指針取值和用指針賦值都必須用CopyMemory這個(gè)API,而調(diào)用API的代價(jià)是比較高的,這就決定了我們?cè)赩B里使用指針不能象在C里那樣自由和頻繁,我們必須要考慮指針操作的代價(jià),在后面的"指針應(yīng)用"我們會(huì)再變談這個(gè)問(wèn)題。
    程序五中關(guān)于函數(shù)指針的問(wèn)題請(qǐng)參考VB文檔,無(wú)類型指針void*會(huì)在下面"關(guān)于Any的問(wèn)題"里說(shuō)。
    程序五基本上已經(jīng)包括了我們能在VB里進(jìn)行的所有指針操作,僅此而已。

    下面有一個(gè)小測(cè)試題,如果現(xiàn)在你就弄懂了上面程咬金的三板斧,你就應(yīng)該能做得出來(lái)。
    上面提到過(guò),VB.NET中沒(méi)有VarPtr,我們可以用聲明API的方式來(lái)引入MSVBVM60.DLL中的VarPtr。現(xiàn)在的問(wèn)題如果不用VB的運(yùn)行時(shí)DLL文件,你能不能自己實(shí)現(xiàn)一個(gè)ObjPtr。答案在下一節(jié)后給出。

    四、指針使用中應(yīng)注意的問(wèn)題
    1、關(guān)于ANY的問(wèn)題
    如果以一個(gè)老師的身份來(lái)說(shuō)話,我會(huì)說(shuō):最好永遠(yuǎn)也不要用Any!是的,我沒(méi)說(shuō)錯(cuò),是永遠(yuǎn)!所以我沒(méi)有把它放在程咬金的三板斧里。當(dāng)然,這個(gè)問(wèn)題和是不是應(yīng)該使用指針這個(gè)問(wèn)題一樣會(huì)引發(fā)一場(chǎng)沒(méi)有結(jié)果的討論,我告訴你的只是一個(gè)觀點(diǎn),因?yàn)橛袝r(shí)我們會(huì)為了效率上的一點(diǎn)點(diǎn)提高或想偷一點(diǎn)點(diǎn)懶而去用Any,但這樣做需要要承擔(dān)風(fēng)險(xiǎn)。
    Any不是一個(gè)真正的類型,它只是告訴VB編譯器放棄對(duì)參數(shù)類型的檢查,這樣,理論上,我們可以將任何類型傳遞給API。
    Any在什么地方用呢?讓我們來(lái)看看,在VB文檔里的是怎么說(shuō)的,現(xiàn)在就請(qǐng)打開(kāi)MSDN(Visual Studio 6自帶的版本),翻到"Visual Basic文檔"->"使用Visual Basic"->"部件工具指南"->"訪問(wèn)DLL和Windows API"部分,再看看"將 C 語(yǔ)言聲明轉(zhuǎn)換為 Visual Basic 聲明"這一節(jié)。文檔里告訴我們,只有C的聲明為L(zhǎng)PVOID和NULL時(shí),我們才用Any。實(shí)際上如果你愿意承擔(dān)風(fēng)險(xiǎn),所有的類型你都可以用Any。當(dāng)然,也可以如我所說(shuō),永遠(yuǎn)不要用Any。   
    為什么要這樣?那為什么VB官方還要提供Any?是信我的,還是信VB官方的?有什么道理不用Any?
    如前面所說(shuō),VB官方不鼓勵(lì)我們使用指針。因?yàn)閂B所標(biāo)榜的優(yōu)點(diǎn)之一,就是沒(méi)有危險(xiǎn)的指針操作,所以的內(nèi)存訪問(wèn)都是受VB運(yùn)行時(shí)庫(kù)控制的。在這一點(diǎn)上,JAVA語(yǔ)言也有著同樣的標(biāo)榜。但是,同JAVA一樣,VB要避免使用指針而得到更高的安全性,就必須要克服沒(méi)有指針而帶來(lái)的問(wèn)題。VB已經(jīng)盡最大的努力來(lái)使我們遠(yuǎn)離指針的同時(shí)擁有強(qiáng)類型檢查帶來(lái)的安全性。但是操作系統(tǒng)是C寫(xiě)的,里面到處都需要指針,有些指針是沒(méi)有類型的,就是C程序員常說(shuō)的可怕的void*無(wú)類型指針。它沒(méi)有類型,因此它可以表示所有類型。如CopyMemory所對(duì)應(yīng)的是C語(yǔ)言的memcpy,它的聲明如下:
    void *memcpy( void *dest, const void *src, size_t count );
    因memcpy前兩個(gè)參數(shù)用的是void*,因此任何類型的參數(shù)都可以傳遞給他。
    一個(gè)用C的程序員,應(yīng)該知道在C函數(shù)庫(kù)里這樣的void*并不少見(jiàn),也應(yīng)該知道它有多危險(xiǎn)。無(wú)論傳遞什么類型的變量指針給上面memcpy的void*,C編譯器都不會(huì)報(bào)錯(cuò)或給任何警告。
    在VB里大多數(shù)時(shí)候,我們使用Any就是為了使用void*,和在C里一樣,VB也不對(duì)Any進(jìn)行類型檢查,我們也可以傳遞任何類型給Any,VB編譯器也都不會(huì)報(bào)錯(cuò)或給任何警告。
    但程序運(yùn)行時(shí)會(huì)不會(huì)出錯(cuò),就要看使用它時(shí)是不是小心了。正因?yàn)樵贑里很多錯(cuò)誤是和void*相關(guān)的,所以,C++鼓勵(lì)我們使用satic_cast<void*>來(lái)明確指出這種不安全的類型的轉(zhuǎn)換,已利于發(fā)現(xiàn)錯(cuò)誤。
    說(shuō)了這么多C/C++,其實(shí)我是想告訴所有VB的程序員,在使用Any時(shí),我們必須和C/C++程序員使用void*一樣要高度小心。
    VB里沒(méi)有satic_cast這種東西,但我們可以在傳遞指針時(shí)明確的使用long類型,并且用VarPtr來(lái)取得參數(shù)的指針,這樣至少已經(jīng)明確地指出我們?cè)谑褂梦kU(xiǎn)的指針。如程序二經(jīng)過(guò)這樣的處理就成了下面的程序:
【程序五】:'使用更安全的CopyMemory,明確的使用指針!
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Long, ByVal Source As Long, ByVal Length As Long)
    Sub SwapStrPtr2(sA As String, sB As String)
        Dim lTmp As Long
        Dim pTmp As Long, psA As Long, psB As Long
        pTmp = VarPtr(lTmp): psA = VarPtr(sA): psB = VarPtr(sB)
        CopyMemory pTmp, psA, 4
        CopyMemory psA, psB, 4
        CopyMemory psB, pTmp, 4
    End Sub
   


支持(0中立(0反對(duì)(0單帖管理 | 引用 | 回復(fù) 回到頂部

返回版面帖子列表

VB真是想不到系列之二:VB《葵花寶典》--指針技








簽名
主站蜘蛛池模板: 特一级黄色毛片 | 91狠狠狠狠狠狠狠狠 | 国产亚洲精品久久网站 | 国产高清不卡无码视频 | 波多野结衣亚洲一区 | 久久久久久亚洲精品成人 | 在线视频97 | 四虎国产精品一区二区 | 日韩欧美在线观看免费 | 久久久欧美国产精品人妻噜噜 | 日本特黄一级大片 | 丰满少妇被猛烈进入 | 欧美人体做爰大胆视频 | 天堂网在线最新版www中文网 | 国产偷v | 先锋影音男人av资源 | 少妇粗大进出白浆嘿嘿视频 | 国产亚洲精品久久久久久无几年桃 | 国产一区啪啪 | 日产精品高潮呻吟av久久 | 国产成人在线网站 | 成人黄色在线视频 | 成人无码视频在线观看网址 | 久久综合九色综合久99 | 古装做爰无遮挡三级聊斋艳谭 | 久久久久久av无码免费网站 | 亚洲黄色片网站 | 狠狠躁夜夜躁人人爽超碰91 | 风间由美一区 | 99久热在线精品视频观看 | 国产激情免费 | 深夜福利网址 | 国产精品亚洲综合一区在线观看 | 51真实女性私密spa按摩偷拍 | 亚洲色图图片区 | 亚洲色图制服诱惑 | 97视频免费观看 | 国产欧美日韩视频在线观看 | 国产日产欧产精品精品app | 999国产精品视频 | 精品国产美女福到在线不卡 | 国产欧美一区二区三区国产幕精品 | 中国少妇的呻吟xvideoshd | 亚洲一级黄色大片 | 中文字幕国内自拍 | 天天摸天天看天天做天天爽 | 久久国语精品 | 五月综合色婷婷 | 午夜在线视频一区二区区别 | 欧美专区第一页 | 3d成人精品动漫视频在线观看 | 99久热| 国产成人亚洲综合无码精品 | 操bbbbb| 国产麻豆乱码精品一区二区三区 | 无码专区一va亚洲v专区在线 | 国产亚洲区 | 国产成人亚洲综合 | 亚洲一区二区视频在线观看 | 伊人影院网| 成人免费的视频 | 中文字幕3 | 久久综合成人 | 亚洲精品码 | 欧美人与牲动交xxxx | 91精品欧美一区二区三区 | 日日碰狠狠躁久久躁综合网 | 91tv亚洲精品香蕉国产一区 | 毛片基地站 | 亚洲网站在线观看 | 亚洲一区精品视频在线观看 | 8888四色奇米在线观看 | 亚洲欧美日韩另类精品一区二区三区 | 麻豆文化传媒精品一区 | 亚洲黄色录像 | 91精品91| 国产成人免费av一区二区午夜 | 日韩在线第二页 | 久久久亚洲欧美 | 欧美日韩国产黄色 | 黄色18网站 | 色视频网站免费 | 九色激情网| 麻豆国产一区二区三区 | 国产精品高清一区二区 | 成人久久免费 | 黄在线网站 | 国产精品一区二区久久久久 | 四川丰满妇女毛片四川话 | 男女性杂交内射女bbwxz | 国产精品久久久久久久久久蜜臀 | 欧美大片高清免费看 | 国产麻豆md传媒视频 | 少妇太爽了在线观看 | 另类 综合 日韩 欧美 亚洲 | 国产精品网站在线观看免费传媒 | 色妺妺视频网 | 精品国产成人亚洲午夜福利 | 国产精品野外av久久久 | 久久久久蜜桃精品成人片 | 99热r| 午夜久久剧场 | av在线免 | 久久精品成人 | 大奶子情人 | 国产黄色大全 | 中文字幕亚洲乱码熟女一区二区 | 欧美性色黄大片手机版 | 久久久国产亚洲 | 精品夜夜澡人妻无码av蜜桃 | 免费观看又色又爽又黄动态 | 久久看av | 久久999视频 | 91视频最新地址 | 欧美乱妇高清无乱码一级特黄 | 大桥未久在线视频 | 午夜尤物| 久久精品国产99精品国产亚洲性色 | 日韩精品短视频 | 狠狠色网站 | 蜜臀av在线播放一区二区三区 | 亚洲综合视频在线观看 | 欧美三根一起进三p | 伊人久久麻豆 | 91网站免费在线观看 | 成年人网站在线免费观看 | 午夜影院在线播放 | 九一自拍中文字幕 | 91免费视频入口 | 欧美乱大交aaaa片if | 亚洲一区二区免费在线观看 | 中文精品无码中文字幕无码专区 | 成人免费毛片男人用品 | 蜜桃视频一区二区在线观看 | 激情久久五月天 | 欧美一级黑人 | 欧美专区亚洲专区 | 国产福利一区视频 | 小sao货水好多真紧cao视频 | 深夜福利网站在线观看 | 日韩精品一区二区在线观看 | 特级少妇 | 精二青青河边草解释正确的是 | 男女日批| 大陆一级a毛片杨玉环 | 女人性做爰免费网站 | 国产精品18久久久久久首页狼 | 久久久天堂国产精品女人 | 综合久久色 | a视频网站 | 亚洲大尺度无码无码专区 | 综合无码一区二区三区 | 2019中文字幕在线视频 | 国产精品v欧美精品v日韩 | 久久97精品久久久久久久不卡 | 色婷婷在线观看视频 | 一区二区三区在线免费 | 人妻内射一区二区在线视频 | 在线成人欧美 | 日本少妇ⅹxxxxx视频 | 国产精品久久久久精 | 欧美交换乱淫粗大 | 国产精品av久久久久久小说 | 国产二区自拍 | 亚洲欧美性受久久久999 | 日日噜噜夜夜狠狠久久波多野 | 亚洲天堂中文字幕 | 蜜臀久久精品 | 极品少妇被猛得白浆直流草莓视频 | 久久免费国产精品1 | 久久久久久婷 | 欧美日韩新片 | 一区二区三区在线观看免费 | 中文字幕免费高清 | 偷偷操影院 | 国内精品久久久久久久影视麻豆 | 亚洲熟妇av一区二区三区浪潮 | 欧美色图视频在线 | 亚洲人成人天堂h久久 | 国产女人第一次做爰视频 | 久久精品视频在线免费观看 | 成人av动漫 | 日日摸天天摸97狠狠婷婷 | 国产精品女人精品久久久天天 | 日韩欧美精品在线观看 | 色妞视频男女视频 | 日本视频高清一区二区三区 | 亚洲国产成人91精品 | 台湾佬中文娱乐22vvvv | 亚洲精品成人网站在线观看 | 欧美精品首页 | 一级国产黄色片 | 国产精品久久久久久人妻精品动漫 | 中国老妇淫片bbb | 国产女人乱人伦精品一区二区 | 国产精品视频一区二区三区不卡 | 国产精品久久久久久久久久影院 | 精品人妻系列无码一区二区三区 | 蜜桃臀久久久蜜桃臀久久久蜜桃臀 | 揉少妇高挺双乳 | 成人免费视频一区二区 | 中文字幕日本在线 | 福利网站在线 | www久久网| 色www国产亚洲阿娇 色爱av综合 | 一交一性一色一伦一区二 | 99热精品久久只有精品 | 第一次处破女啪啪 | 中文字幕第一页九 | 国产欧美激情日韩成人三区 | 九色在线视频 | 九一国产在线观看 | 国产亚洲成av片在线观看 | 久久精品中文字幕 | 亚洲三级影视 | 成人做爰69片免费观看 | 婷婷中文字幕 | 欧美高清在线一区 | 日本毛片视频 | 欧美性欧美巨大黑白大战 | 成人小视频在线观看免费 | 成人依依网 | 久久精品麻豆日日躁夜夜躁 | 日本无码人妻精品一区二区蜜桃 | 性天堂网 | 亚洲色无码国产精品网站可下载 | 乱女伦露脸对白在线播放 | 久久精品亚洲中文无东京热 | 欧美精品一二区 | 免费在线观看的黄色网址 | 国产天堂av在线 | 欧美特黄视频 | 亚洲天堂2015 | 久久国产劲暴∨内射 | 久久久久无码精品亚洲日韩 | 激烈的性高湖波多野结衣 | 中字幕人妻一区二区三区 | 丁香六月久久 | 中文字幕在线观看视频地址二 | 久久久久亚洲精品 | 99久久精品国产一区二区成人 | 欧美自拍亚洲综合丝袜 | 狂野欧美性猛交xxxxx视频 | zzijzzijzzij亚洲人 | 顶级黄色片 | 亚洲另类视频 | 灌满闺乖女h高h调教尿h | 国内精品久久久久久久久 | 少妇2做爰交换朴银狐 | 中国一级黄色影片 | 麻豆影视在线 | 欧美xxxx免费虐 | 久久av无码精品人妻系列果冻传媒 | 成人综合在线视频 | 日本在线视频播放 | 久久精品成人欧美大片 | 欧美精品免费一区二区三区 | 久久免费看a级毛毛片 | 情欲按摩院同性3 | 波多野结衣久久 | 免费在线成人 | 欧美丰满老熟妇aaaa片 | 国产成人精品999在线观看 | 黄色大片a级 | a级毛片在线免费 | 好吊色在线视频 | 日本高清视频一区二区三区 | 日本19禁啪啪吃奶大尺度 | 欧美jizzhd精品欧美巨大免费 | 亚洲精品久久久久久一区二区 | 国产精品女同一区二区软件 | 国产精品亚亚洲欧关中字幕 | 99视频久久| av成人亚洲 | 精品国产乱码久久久久乱码 | 香蕉av777xxx色综合一区 | 亚洲欧美综合一区 | 国产1234区2023 | 四虎影视永久在线观看 | 国产成人一区二区三区 | 夜色福利院在线观看免费 | 欧洲一二三区 | 免费看欧美一级片 | 亚洲字幕在线观看 | 91嫩草国产露脸精品国产 | 久久论理| 国产亚洲性欧美日韩在线观看软件 | 人妻丰满熟av无码区hd | 一级片在线免费观看 | 欧美亚洲视频一区二区 | 日韩中文字幕 | 久久天天躁狠狠躁夜夜婷 | 亚洲一区二区三区免费视频 | 999av视频| 久久精品网站免费观看 | 免费观看一区二区 | 久久久久99精品成人片三人毛片 | 一性一交一口添一摸视频 | 青青草自拍偷拍 | 久久婷婷精品 | 精品国产一区二区三区麻豆仙踪林 | 77777_亚洲午夜久久多人 | 久久久激情视频 | 国产怡红院在线观看 | 亚洲色偷偷偷综合网 | 国产精品久久久久久久久齐齐 | 日韩视频不卡 | 免费黄色看片 | 无码精品国产va在线观看 | 日韩和欧美一区二区三区 | 黄a无码片内射无码视频 | 久久精品亚洲日本波多野结衣 | 青青草手机视频在线观看 | 狠狠干美女 | 强奷人妻日本中文字幕 | 精品人妻少妇嫩草av无码专区 | 国产精品激情在线观看 | 日本大胆人体视频 | 瑟瑟久久 | 国产精品特级毛片一区二区三区 | 国产av寂寞骚妇 | 亚洲精品有限公司 | 98久久久| 少妇诱惑av | 伦理片午夜 | 国产交换配乱淫视频a | 久久极品视频 | 天堂亚洲免费视频 | 韩国无码无遮挡在线观看 | 在线观看的黄网 | 揉着我的奶从后面进去视频 | 亚洲美女视频在线 | xx色综合| 久久精品视频91 | 91中文在线观看 | 无码国产成人午夜电影在线观看 | 成在人线av无码免费 | 久久国内精品自在自线 | 91在线软件| 操操操视频 | 欧美激情免费在线 | 成人欧美一区二区三区视频 | av动态| 99久久久 | 亚洲高清在线观看视频 | 91免费版黄色 | 91免费观看网站 | 天天操天天碰 | 国产精品永久久久 | 91资源新版在线天堂成人 | 精品久久国产 | 丁香五香天堂网 | 国产精品网站在线观看免费传媒 | a激情 | 国产精品不卡av | 久久麻豆视频 | b站永久免费看片大全 | 久久精品国产视频 | 国产嫩草在线观看 | 麻豆av剧情 | 国产性生活毛片 | 一本色道久久88—综合亚洲精品 | 精品国产成人av在线免 | 国产三级漂亮女教师 | 五月天婷婷缴情五月免费观看 | 影音先锋 成人 | 国产色影院 | 久久婷婷五月综合色丁香 | 国产麻豆一区二区三区精品 | 精品一区二区久久久 | 五月天丁香亚洲 | 91九色中文| 中文字幕人妻无码一夲道 | 日本www色视频 | 四虎影库在线永久影院免费观看 | 久久精品国产亚洲 | 色老头在线一区二区三区 | 日本黄视频在线观看 | 色悠悠网| 亚洲色婷婷综合久久 | 毛茸茸日本熟妇高潮 | 一区二区精品视频在线观看 | 国产欧美一区二区精品97 | 国产一区二区三区日韩精品 | bb日韩美女预防毛片视频 | 麻豆精品视频 | 自拍偷拍亚洲区 | 欧美激情一区二区三区蜜桃视频 | 丰满蕾丝乳罩少妇呻吟91 | 亚洲精品久久久久久蜜桃 | 黄视频网站在线 | 久久亚洲精品久久国产一区二区 | 久久牛牛| 日日噜噜噜夜夜爽爽狠狠片 | 欧美xxxx片 | 一级特黄aa大片欧美 | 丰满少妇理论片 | 淫欲av | 日韩内射美女人妻一区二区三区 | 手机在线精品视频 | 亚洲精品国产av天美传媒 | 国产日本一区二区 | 激情视频网址 | 天天躁日日躁狠狠躁800凹凸 | 少妇把腿扒开让我爽爽视频 | 一区二区亚洲视频 | 亚洲日本中文字幕天天更新 | 在线免费观看麻豆 | 婷婷开心激情综合五月天 | 色图av| 99成人在线观看 | 中文字幕2019在线 | 欧美午夜精品久久久 | 日韩伦人妻无码 | 欧美人做人爱a全程免费 | 狠狠做深爱婷婷久久综合一区 | 国产一区二区三区在线视频 | 91亚洲国产成人久久精品网站 | 夜夜嗨av一区二区三区四区 | 欧美日韩在线亚洲综合国产人 | 一级aaa级毛片午夜在线播放 | 国产日韩大片 | 最新中文字幕免费视频 | 国产成人av网站 | 中文字幕日韩精品在线观看 | 欧美黑人巨大xxxxx | 免费福利在线观看 | av免费福利 | 国产精品www | 一区二区三区四区产品乱 | 美国黄色一级视频 | 在线国产中文字幕 | 国产精品久久久久久久久久久久久久久久 | 国产91精品一区二区三区四区 | 国产无精乱码一区二区三区 | √天堂在线 | 日本午夜小视频 | 国产乱码精品一区二区三区四川人 | 俄罗斯a级毛片 | 青青视频网 | 亚洲欧美日韩在线看 | 波多野结衣乳巨码无在线观看 | 99久久免费精品国产男女高不卡 | 天天操狠狠 | 天天激情| 毛片91| 久久亚洲精品中文字幕无男同 | 青青青视频免费 | 欧美野外做受又粗又硬 | 少妇无套高潮一二三区 | 亚洲欧洲成人在线 | 久久久久久久久久久免费精品 | www成人啪啪18软件 | 亚洲精品午夜无码电影网 | 熟女性饥渴一区二区三区 | 综合婷婷 | 精品少妇一区二区三区日产乱码 | 91.久久| 丁香激情综合久久伊人久久 | 亚洲精品乱码久久久久久不卡 | 国产永久免费无遮挡 | 黄色片网站免费观看 | 九九在线 | 免费超爽视频在线观看 | 日日摸日日碰人妻无码老牲 | 免费99精品国产自在在线 | 好吊视频一区二区三区 | 精品国产一区av天美传媒 | 精品少妇v888av | 另类小说欧美 | 日韩欧美一区二区三区四区 | 国产精品久久久久久影视 | 波多野结衣aⅴ在线 | 国产精品性做久久久久久 | 国产一区二区三区成人欧美日韩在线观看 | 国产人碰人摸人爱免费视频 | 亚洲做受高潮无遮挡 | 在线观看福利视频 | 国产一级片免费 | 久久av一区二区 | 美女网站黄频 | 亚洲欧美在线视频 | 久久久一本精品99久久精品66 | 日韩av日韩 | 国产特级毛片aaaaaa毛片 | 免费高清黄色 | 亚洲欧美另类在线图片区 | 久久一二区 | 日本老妇性生活 | zzijzzij亚洲丰满少妇 | 天天做天天爱夜夜爽导航 | 色免费视频 | www波多野结衣com | 九色影视 | 精品欧美成人高清在线观看 | 国产成人午夜福利在线播放 | 成人免费区一区二区三区 | 中文字幕亚洲乱码熟女在线萌芽 | 久久特黄视频 | 最新69国产成人精品视频免费 | 热re99久久精品国产99热 | 久久久国产网站 | 一本色道久久精品 | 中文字幕日韩精品在线观看 | 一区二区三区视频在线 | 狠狠色狠狠色综合网 | 免费成人黄色网址 | av午夜在线 | 男人吃奶摸下挵进去好爽 | 人妻av中文系列 | 欧美另类视频在线观看 | 国产一区二区99 | 欧美一区二区三区的 | 亚洲另类伦春色综合小说 | 桃色99| 日本欧美www | 欧美在线 | 亚洲 | 久久成人激情 | 一本色道久久亚洲综合精品蜜桃 | 好看的黄色网址 | 久草一区二区 | 男人的天堂视频网站 | 国产肉体xxxx裸体137大胆 | 韩国三级中文字幕hd浴缸戏 | 国产精品无码久久久久 | 91亚洲网站| 女人被爽到呻吟gif动态图视看 | 日日不卡av| 国产激情一区 | 久久久无码中文字幕久... | 超碰在线国产97 | 美女福利视频一区 | 国产淫| 18禁黄网站免费 | 天天色婷婷| 69精品人人人人 | 日日躁夜夜躁白天躁晚上 | 国产日韩精品视频 | 久久亚洲sm情趣捆绑调教 | 欧美激情视频一区二区三区不卡 | 少妇黄色一级片 | 五十路亲子中出在线观看 | 欧美日韩国产成人精品 | 欧美老妇交乱视频在线观看 | 日本一本在线视频 | 精品视频在线一区二区 | 色婷婷亚洲综合 | 久久久中文久久久无码 | 国产白丝jk捆绑束缚调教视频 | 国产黄色免费观看 | 国产免费一区二区 | 亚洲精品乱码久久久久久蜜桃图片 | 精品夜色国产国偷在线 | 黑人上司好猛我好爽中文字幕 | 成人在线免费 | 免费观看成人羞羞视频网站观看 | 中文字幕日韩av | av狠狠干| 国产老女人91精品一区 | 国产精品片aa在线观看 | 亚洲免费看片 | 国产亚洲精品久久久久久青梅 | 天堂中文最新版在线中文 | 夜精品a片一区二区三区无码白浆 | 国产老头和老太xxxx视频 | 日韩精品高清在线 | 韩国三级hd两男一女 | 日韩中文人妻无码不卡 | 日本一二三区在线 | 在线播放不卡av | 国产伦理丿天美传媒av | 伊人动漫 | 欧美性天堂 | 一级国产精品一级国产精品片 | 四虎成人精品无码永久在线 | 国产成人天天5g影院在线观看 | 精品一区精品二区 | 成年性生交大片免费看 | 国产精品成人一区二区艾草 | 青青操国产 | 男女下面进入的视频 | 精品人妻人人做人人爽 | 国产欧美久久久精品免费 | 色噜噜久久综合伊人一本 | 浓毛老太交欧美老妇热爱乱 | 国产成人啪精品 | 亚洲国产精品成人无久久精品 | 国产人与禽zoz0性伦免费视频 | 暖暖成人免费视频 | 国产精无久久久久久久免费 | 免费看污片的网站 | 国产涩涩视频在线观看 | 精品国产乱码一区二区三 | 成人夜晚看片 | 国产精品福利视频导航 | yy111111少妇影院免费观看 | 欧美少妇xxx | 禁断一区二区三区在线 | 国产精品ⅴa有声小说 | 日韩久久久精品 | 粉嫩av在线 | 91亚洲网| 亚洲最大av番号库 | a级毛片特级毛片 | 国产三级毛片视频 | 熟女精品视频一区二区三区 | 亚洲黄色在线看 | 国产国语性生话播放 | 久久精品日产第一区二区三区在哪里 | 国产96视频| 六月综合网| 麻豆性生活 | 伊人动漫 | 久久人妻少妇嫩草av蜜桃 | 国产免费黄色av |