亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        提前介入法在C語言指針教學(xué)中的應(yīng)用

        2022-03-13 13:15:39陳冰川
        大眾科技 2022年12期
        關(guān)鍵詞:教學(xué)學(xué)生

        陳冰川

        提前介入法在C語言指針教學(xué)中的應(yīng)用

        陳冰川

        (廣東財經(jīng)大學(xué),廣東 廣州 510320)

        C語言程序設(shè)計是所有計算機及其相關(guān)專業(yè)課程中的一門重要基礎(chǔ)課,而指針又是該課程的重點及難點,也是其他語言中理解引用型變量的基礎(chǔ)。文章分析了指針成為課程難點的原因,并在教學(xué)中采用了提前介入法,在整個教學(xué)過程中,提前將與指針有關(guān)的知識有機地融入到不同章節(jié),使學(xué)生在整個學(xué)習(xí)過程中逐步深化指針的概念,并了解其特點和作用,最終在指針一章時再進行梳理總結(jié)。通過教學(xué)實踐發(fā)現(xiàn),教學(xué)中采用提前介入法,使學(xué)生對于指針的理解和掌握程度得到提升,起到了較好的實踐效果。

        C語言;指針;編程語言教學(xué)

        引言

        C 語言程序設(shè)計在計算機程序設(shè)計語言中占有重要的一席之地,它以語法簡潔緊湊、程序精煉、運算符和數(shù)據(jù)結(jié)構(gòu)豐富、編程靈活、可移植性好而著稱[1]。而指針是其精髓和靈魂,是 C 語言中最具魅力和最富活力的部分[2],同時也是公認(rèn)的教學(xué)難點[3]。C 語言通過指針來實現(xiàn)訪問硬件資源、動態(tài)分配和回收內(nèi)存空間、降低函數(shù)調(diào)用中參數(shù)傳遞的開銷、減少使用全局變量、實現(xiàn)函數(shù)回調(diào)等功能。沒有指針的 C 語言不可能進行任何有實際意義的編程[2]。而且指針的思想并不是只在C語言中有意義,在JAVA、Python等語言中雖然取消了指針,但是其“引用型”變量的很多性質(zhì)和應(yīng)用與指針變量非常相似,掌握好了指針的概念,對于后續(xù)其他語言的學(xué)習(xí)同樣具有重要意義。但是在實際教學(xué)實踐中發(fā)現(xiàn),高校學(xué)生尤其是低年級學(xué)生或是非計算機類學(xué)生,在對計算機相關(guān)基礎(chǔ)沒有了解的情況下,對于指針的理解和使用是具有一定困難的,因此有必要采取措施對指針的教學(xué)進行改進,提升學(xué)生對其的理解與掌握程度。

        按照目前的教學(xué)規(guī)律,指針內(nèi)容往往是放在比較靠后的階段進行介紹的,由于前面如數(shù)據(jù)存儲方式、變量、數(shù)組、函數(shù)等內(nèi)容并不涉及指針,后面章節(jié)再談起指針,會使學(xué)生產(chǎn)生知識認(rèn)知上的錯位和斷層。如果在講授以上內(nèi)容時,提前加入與指針相關(guān)的概念,到了指針一章時將會使學(xué)生作為一個體系去理解,接受度將會大為提高。

        基于以上目的,筆者結(jié)合自身學(xué)習(xí)和教學(xué)的經(jīng)驗提出了提前介入的教學(xué)方法,用于在C語言程序設(shè)計教學(xué)中,即在C語言教學(xué)過程中,每一章根據(jù)其特點,從不同側(cè)面適當(dāng)?shù)匾胫羔樀母拍?、使用方式和基本原理。該方法已?jīng)應(yīng)用于實踐并取得了較好的成果。

        1 提前介入法的基本思想

        筆者教學(xué)使用的教材為清華大學(xué)出版社出版,由譚浩強主編的《C語言程序設(shè)計》(第三版),根據(jù)教材的章節(jié)特點逐步引入指針的定義、內(nèi)存存儲方式、基本原理、使用方法等。由于指針相關(guān)知識為教材一章的內(nèi)容,如果在某節(jié)課涉及過多,會導(dǎo)致無法按時完成教學(xué)任務(wù),也會為學(xué)生的學(xué)習(xí)帶來負(fù)擔(dān),因此在每章提前介入指針概念時,基本原則是:適當(dāng)涉及、點到即止、不求全懂、只留印象。

        提前介入的方法主要目的是讓學(xué)生在正式進行指針一章的學(xué)習(xí)時,對于指針已經(jīng)有一個初步的認(rèn)識,并且了解了指針引入的目的,能夠帶來的好處,它和變量、變量地址之間的關(guān)系等。到了正式進行指針一章的講授時,學(xué)生就能夠比較自然地掌握和了解指針的特點和用法。

        2 按章節(jié)提前介入指針的具體方法

        本文以譚浩強主編的清華出版社出版的《C語言程序設(shè)計(第3版)》為基礎(chǔ),分別以數(shù)據(jù)的存儲與運算、順序結(jié)構(gòu)、利用數(shù)組處理批量數(shù)據(jù)和函數(shù)實現(xiàn)模塊化程序設(shè)計四章為基礎(chǔ),介紹如何在這些章節(jié)中引入指針的概念以及講授的重點。

        2.1 在“數(shù)據(jù)的存儲與運算”中引入指針

        本章的主要內(nèi)容是介紹數(shù)據(jù)在內(nèi)存中如何存儲,以及按照不同數(shù)據(jù)類型(包括整型、實型和字符型)介紹變量、常量的不同存儲方式和表現(xiàn)形式,最后介紹算數(shù)表達式和相關(guān)的C語言表達式。本章關(guān)鍵是對于變量和常量的理解和掌握,而指針對于變量的存儲模式具有促進作用,因此本章可自然地引入指針和指針變量的概念。

        首先,在本章第一節(jié)“數(shù)據(jù)在計算機中是怎樣存儲的”中,強化計算機按字節(jié)存儲,字節(jié)的編號就是地址,地址能夠指出數(shù)據(jù)存儲的位置便于查找,由此可引出地址還叫做“指針”,讓學(xué)生對于內(nèi)存存儲有一個初步概念,了解到通過地址或指針就可以找到要存儲(讀?。?shù)據(jù)的位置。

        然后,在本章第二節(jié)“整型數(shù)據(jù)的運算與分析”中,介紹什么是變量時將變量名、變量地址、存儲單元和變量值,通過校園的某棟樓的名稱(如:第一教學(xué)樓)、所在校內(nèi)地址(如某區(qū)某棟)、大樓本身和樓內(nèi)的學(xué)生分別做一一對應(yīng),深化學(xué)生對于變量名、變量地址的理解。在此基礎(chǔ)上,講授賦值的過程,即編譯系統(tǒng)根據(jù)變量名所代表的地址,找到存儲單元,將所賦之值存入。

        (1)引導(dǎo)學(xué)生思考,如果定義了一個整型變量x其對應(yīng)的地址為100000,還有另外一個變量p(此處忽略如何定義)保存了變量x的地址100000,請學(xué)生設(shè)想如果想給100000的地址對應(yīng)的存儲單元中存儲一個整型常量10,如何處理。

        (2)進一步引導(dǎo)學(xué)生了解可以通過x=10進行賦值,即告訴系統(tǒng)將10存儲到變量x對應(yīng)的地址中。

        (3)再進一步提示學(xué)生p也存儲了x的地址,如何告知系統(tǒng)將10存儲到p所保存的地址對應(yīng)的存儲空間呢?注意p=10是錯誤的,按照x=10的處理規(guī)則會發(fā)現(xiàn)這樣的語句只會將10存儲到p對應(yīng)的地址(而不是存儲的地址)中。

        (4)最后告訴學(xué)生,c語言通過符號“*p”來代表訪問p保存的地址空間,而變量p就像一個“指針”指向了x對應(yīng)的內(nèi)存空間,因此p就是后面將要學(xué)習(xí)到的“指針變量”即:用來存儲指針(地址)的變量。如果想要將x的地址賦值到p變量中,由于編程期間是無法了解該變量在運行時被分配的地址,不能直接給p賦值100000,只能通過p=&x的方法賦值,進而介紹取地址的符號。

        到此基本將指針和指針變量,以及它的作用講清楚了。但是由于不是系統(tǒng)地進行講授,為了保證學(xué)生學(xué)習(xí)的完整性,此處一般會強調(diào)并總結(jié),無論學(xué)生聽懂與否,都沒有關(guān)系,只要了解了地址還叫指針,用來存儲地址的變量就叫做指針變量即可,以后還會繼續(xù)涉及相關(guān)內(nèi)容。

        2.2 在“順序結(jié)構(gòu)”中引入指針

        本章主要介紹算法和最基本的編程結(jié)構(gòu)順序結(jié)構(gòu),同時介紹了賦值語句和輸入輸出語句。因此本章將會在講授賦值語句和格式輸入輸出語句時提前介入指針的相關(guān)概念。

        (1)賦值語句。

        在賦值語句的講授過程中,在講授了賦值語句的預(yù)算順序以及作用后,可再次向?qū)W生提示,當(dāng)一個整型變量x在賦值號左右兩邊所代表的含義之間的細微區(qū)別:在左邊表示將賦值號右面的表達式的值賦值到x所代表的內(nèi)存存儲空間中,而在右邊則表示將x所代表的的內(nèi)存儲空間的值賦值到賦值號左邊的變量中。一個表示x對應(yīng)的存儲空間,另一個表示x對應(yīng)的存儲空間的值。在這樣的解釋前提下再次提出上一章提及的指針內(nèi)容:

        ①請學(xué)生思考:如果有一個變量p用來存儲x的地址,如果想向x賦值10,如果允許表達式p=10在c語言中運行,會帶來什么結(jié)果?能否達到向x所代表的地址的存儲空間寫入10?

        ②告訴學(xué)生按照賦值語句的賦值規(guī)則,上述結(jié)果只會給p對應(yīng)的存儲空間賦值10,而不會賦值到x對應(yīng)的存儲空間中,因此需要使用“*p=10”的方法進行賦值。此處再次提醒學(xué)生對于指針的含義以及*p的含義。

        通過以上的講授既讓學(xué)生進一步了解賦值語句的作用,也使學(xué)生對于指針的操作與應(yīng)用有了進一步的認(rèn)識。

        (2)格式輸入輸出語句。

        在格式輸入輸出函數(shù)的講授中,最容易出錯的就是在scanf函數(shù)中變量參數(shù)要加取地址的符號&,此處可以再次引入指針相關(guān)的介紹。相關(guān)講解內(nèi)容如下:

        ①講授scanf(“%d”,&x)函數(shù)的作用,是將輸入的整型值存儲到x對應(yīng)地址的存儲單元中。

        ②簡單告知學(xué)生當(dāng)變量作為函數(shù)參數(shù)時相當(dāng)于把變量值傳入函數(shù),并未傳入具體地址,從而導(dǎo)致函數(shù)無法獲取變量的值。

        ③為了能夠?qū)⒌刂穫魅牒瘮?shù),則需要提供一個操作符用于返回變量的地址,c語言用“&”表示取地址的操作。

        ④在上機實驗課時,可以讓學(xué)生通過輸出語句輸出x的值和&x的值,同時指導(dǎo)學(xué)生如何通過開發(fā)環(huán)境查看變量所在的內(nèi)存,以及存儲的數(shù)據(jù)。

        通過上述內(nèi)容的講述,既使學(xué)生了解了輸出函數(shù)的本質(zhì)和變量在內(nèi)存中存儲的方式,還能夠進一步了解去地址符號的作用,訓(xùn)練了學(xué)生上機調(diào)試代碼的能力。

        2.3 在“利用數(shù)組處理批量數(shù)據(jù)”中引入指針

        由于選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)兩章主要是介紹程序結(jié)構(gòu),與內(nèi)存存儲和變量關(guān)系不大,這兩章不再引入指針相關(guān)知識,將學(xué)生的精力全部放到這兩章容易錯誤的知識點上,如邏輯表達式的運算,循環(huán)的邊界條件等。而到了本章主要介紹數(shù)組時,就可以再次將指針相關(guān)的知識介入,加深學(xué)生的理解。本章主要從數(shù)組的定義,以及內(nèi)存存儲方式進行指針相關(guān)知識的介入。

        (1)一維數(shù)組定義。

        在講授到一維數(shù)組定義時,在講解了一維數(shù)組的定義后編譯系統(tǒng)會根據(jù)定義的數(shù)組長度在內(nèi)存中申請連續(xù)的相應(yīng)大小的空間后,再次講解指針的概念。

        ①首先讓學(xué)生理解地址的概念,其實就是一塊連續(xù)存儲空間的首地址,其他地址根據(jù)數(shù)組的類型,依次獲取相關(guān)元素。進而讓學(xué)生考慮對于單個變量的情況,當(dāng)變量為整型為4個字節(jié)時,所謂的變量地址其實也是類似的為這四個連續(xù)存儲空間的首地址,程序在讀取數(shù)據(jù)時是根據(jù)首地址依次讀取四個字節(jié)的內(nèi)容,獲取變量的值。

        ②強調(diào)每一個數(shù)組元素都可以當(dāng)做一個變量看待,即都對應(yīng)了相應(yīng)的內(nèi)存單元,用整型數(shù)組舉例。例如:

        int a[10];

        假設(shè)整型占有4個字節(jié),讓學(xué)生自己推算第i個元素的地址,即第i個元素的地址其實是a+4i。上機時通過內(nèi)存查看和通過語句:

        printf(“%d”,&a[i]);

        查看數(shù)組每一個變量的地址的方式,加深數(shù)組元素地址的印象。

        ③介紹數(shù)組名代表了數(shù)組的首地址,同時擴展告訴學(xué)生,這里的數(shù)組名是一個指針常量,引導(dǎo)學(xué)生回憶常量本身是不可以被賦值的。

        ④再次提前講指針變量p是可以被賦值的例如int x; p=&x; 或者int a[10]; p=a;第一個賦值表示將x的地址存入指針變量p中,而第二個賦值表示將數(shù)組a的首地址存入指針變量p中。此處的表達方式再次說明a本身就是一個指針,所以賦值時無需增加取地址符號“&”。

        ⑤再次提醒學(xué)生由于p是指針變量可以被賦值,而數(shù)組名a是指針常量,不可以被賦值,即以下代碼是錯誤的:

        int a[10],b[10];

        a=b; //a是指針常量不可以被賦值

        ⑥告訴學(xué)生以下賦值都是正確的,并且p與q的值是相同的,進一步讓學(xué)生了解數(shù)組名就是數(shù)組的首地址,即:假設(shè)p和q都是指針變量,int a[10]; p=a; q=&a[0];

        此處不可過于延展,否則將會使學(xué)生陷入過深,忽略了本章的重要內(nèi)容。至此不僅使學(xué)生了解到了數(shù)組名指向數(shù)組的首地址,也再次回憶了變量與常量的區(qū)別,同時涉及了第八章指針部分的指向數(shù)組的指針的內(nèi)容。

        (2)二維數(shù)組的定義。

        在二維數(shù)組的講授中,關(guān)鍵要突出每一維的含義,以及各自代表的意義。具體講授內(nèi)容如下:

        ①講授邏輯上大家認(rèn)為的二維數(shù)組就是一個二維表,而實際內(nèi)存存儲只是簡單的連續(xù)空間的存儲。例如,int a[2][3]邏輯存儲是2行3列,而實際存儲就6個連續(xù)的內(nèi)存空間,同樣讓學(xué)生自己推出每個元素地址的計算公式:a+4*2i+4j。上機實驗課通過內(nèi)存查看進一步理解二維數(shù)組的存儲模式。

        ②讓學(xué)生考慮a,a[0]和&a[0][0]之間的關(guān)系,都是指向首地址,此處不宜多講,因為涉及指針變量加一的值相對難懂,為了防止學(xué)生陷入過深,此處提到即可。

        通過此章關(guān)于指針相關(guān)的內(nèi)容的提前講授,讓學(xué)生對于指針在數(shù)組中的應(yīng)用有了一個初步認(rèn)識,為第八章數(shù)組與指針一節(jié)做好鋪墊。

        2.4 在“函數(shù)實現(xiàn)模塊化程序設(shè)計”中引入指針

        本章主要是介紹C語言的函數(shù)的定義、聲明和使用,并通過變量的周期和生存期說明變量在函數(shù)中的特性。結(jié)合本章內(nèi)容,可以簡要地講解指針作為函數(shù)參數(shù)的內(nèi)容。

        (1)函數(shù)的定義,在本節(jié)中主要提示學(xué)生代碼要運行同樣需要載入內(nèi)存,也同樣要有地址,而函數(shù)名實際上就是函數(shù)指令存儲的首地址也叫“函數(shù)入口”。

        (2)函數(shù)的嵌套調(diào)用,本節(jié)主要通過板書將每個函數(shù)畫作一個獨立的空間,當(dāng)該函數(shù)被調(diào)用時,動態(tài)地在其空間內(nèi)將函數(shù)中的變量,以及形參申請空間,并重點說明將實參的值賦值到形參對應(yīng)的空間中。當(dāng)該函數(shù)調(diào)用結(jié)束后,直接擦除剛剛申請的變量,直觀地讓學(xué)生體會到,函數(shù)內(nèi)部的變量的值除了通過return語句,無法被傳遞至函數(shù)之外;也認(rèn)識到函數(shù)參數(shù)之間是通過值傳遞,而無法通過在函數(shù)內(nèi)改變實參的值。

        (3)數(shù)組作為函數(shù)參數(shù),主要講解數(shù)組名作為參數(shù),數(shù)組名與變量名的關(guān)系。

        ①讓學(xué)生回憶一個函數(shù)如何返回一個值,并讓學(xué)生思考如果有多個值需要返回需要如何處理?進而告知C語言中有幾種返回方式,一是接下來要學(xué)習(xí)的多個全局變量可以把函數(shù)中的若干值返回;第二是后面章節(jié)要學(xué)的通過返回結(jié)構(gòu)體返回多個值;最后是通過指針將地址告訴函數(shù),將結(jié)果直接存儲在相應(yīng)內(nèi)存中,從而起到返回若干值的效果。

        ②理解函數(shù)形參test(int a[10])和調(diào)用函數(shù)中數(shù)組定義int a[10]樣子一樣,但是意義完全不同,作為形參的類似數(shù)組定義的a實際上是一個指針變量,說明是一個指向由10個元素組成的整型數(shù)組的首地址的指針變量,而在調(diào)用程序中定義的則是一個指針常量指代數(shù)組的首地址,通過值傳遞將常量的值傳給了指針變量。此處點到即止不宜講得過深,由于并未系統(tǒng)地進行講授,過于深入容易讓學(xué)生混亂,只需了解到它們是有區(qū)別的即可。

        ③進一步解釋為什么通過數(shù)組名作為函數(shù)的參數(shù)可以將值帶出函數(shù)(本節(jié)前已經(jīng)讓學(xué)生了解了函數(shù)內(nèi)部的值是不能被函數(shù)以外的代碼訪問的)。由于數(shù)組名代表了數(shù)組所在的地址(如②所述),而函數(shù)用數(shù)組名作為參數(shù),也就是在函數(shù)中指明了值需要保存的位置,直接將數(shù)值保存至函數(shù)之外了。

        通過上述的講解讓學(xué)生進一步了解了指針在函數(shù)參數(shù)中所起的作用,并加深了為什么函數(shù)無法改變實參的值的原理。對于第八章講解“指針變量作為函數(shù)參數(shù)”一節(jié)打下鋪墊。

        2.5 教學(xué)小結(jié)

        通過以上課程對于指針的提前介入,根據(jù)課程實際內(nèi)容可以發(fā)現(xiàn)對于指針的提前介入不僅可以讓學(xué)生能夠提前接觸到指針的概念,便于后續(xù)的學(xué)習(xí),而且還可以加深對應(yīng)章節(jié)的一些原理的認(rèn)識,更能夠掌握C語言的精髓。如果只是在指針一章,再將前面的內(nèi)容重復(fù)補充,很難讓學(xué)生有一個清楚的認(rèn)識,因為大學(xué)生的學(xué)習(xí)規(guī)律與中學(xué)不同,課后復(fù)習(xí)的習(xí)慣在減弱,如果在課堂授課時沒有第一時間講清楚,相當(dāng)一部分學(xué)生將會在后續(xù)的學(xué)習(xí)中淡忘,效果將大打折扣,因此在學(xué)習(xí)相關(guān)知識時應(yīng)提前提及,在真正學(xué)習(xí)相關(guān)內(nèi)容時,學(xué)生更容易接受和理解。

        3 結(jié)束語

        指針作為C語言的一個重要特征和精髓,其實貫穿了整個C語言的知識之中,如果不提前接觸,對于很多原理只能是死記硬背,難以融會貫通,因此本文提出了提前介入法,進行C語言中的指針知識點的教學(xué),不僅使學(xué)生更深刻地認(rèn)識到了當(dāng)前所學(xué)知識的原理,也對于后續(xù)指針章節(jié)的學(xué)習(xí)有了更深的理解。實踐證明(4個學(xué)期以上的實踐教學(xué)),發(fā)現(xiàn)到了指針一章的講解時,學(xué)生的理解和接受程度提高了很多。

        在以后的教學(xué)中,需要再深化此種教學(xué),在不影響當(dāng)前課程內(nèi)容理解的同時,更深入地讓學(xué)生提前了解指針,真正地掌握指針,對于C語言的應(yīng)用更加得心應(yīng)手,并會進一步研究提前介入法在其他課程和知識講授中的應(yīng)用與實踐。

        [1]張憶文,C 語言指針教學(xué)難點透析[J]. 計算機教育,2017(1): 155-161.

        [2] 趙帥鋒,胡紹海. 開門見山與循序漸進: 一種 C 語言指針教學(xué)方法[J]. 計算機教育,2017(4): 112-120

        [3] 王立柱. 數(shù)據(jù)結(jié)構(gòu)與算法[M]. 北京: 華章出版社,2013.

        Application of Advance Intervention Method in C Language Pointer Teaching

        C programming language is an important basic course in all computer science and related professional courses, and the pointer is the keynote and difficulty of this course, and it is also the basis for understanding referential variables in other languages. This paper analyzes the reasons why the pointer has become a difficult point of the course, and adopts the advance intervention method in teaching. In the whole teaching process, organically integrate the knowledge related to the pointer into different chapters in advance, so that in the whole learning process students can gradually know the concept of the pointer, understand its characteristics and functions, and finally comb and summarize when teaching the chapter of the pointer. Through the teaching practice, it is found that the advance intervention method in teaching has improved the students' understanding and mastery of the pointer, and has played a good practical effect.

        C language; pointer; programming language teaching

        G642

        A

        1008-1151(2022)12-0128-03

        2022-10-10

        廣東省教育廳特色項目(2017KTSCX074)。

        陳冰川(1975-),男,四川達州人,廣東財經(jīng)大學(xué)講師,研究方向為軟件工程、人工智能。

        猜你喜歡
        教學(xué)學(xué)生
        快把我哥帶走
        微課讓高中數(shù)學(xué)教學(xué)更高效
        甘肅教育(2020年14期)2020-09-11 07:57:50
        如何讓高中生物教學(xué)變得生動有趣
        甘肅教育(2020年12期)2020-04-13 06:25:34
        《李學(xué)生》定檔8月28日
        電影(2018年9期)2018-11-14 06:57:21
        趕不走的學(xué)生
        “自我診斷表”在高中數(shù)學(xué)教學(xué)中的應(yīng)用
        東方教育(2017年19期)2017-12-05 15:14:48
        對外漢語教學(xué)中“想”和“要”的比較
        學(xué)生寫話
        學(xué)生寫的話
        跨越式跳高的教學(xué)絕招
        體育師友(2013年6期)2013-03-11 18:52:18
        强迫人妻hd中文字幕| 欧美午夜a级精美理论片| 精品一二区| 99视频一区二区日本| 青春草在线视频观看| 欧美 丝袜 自拍 制服 另类| 国产亚洲欧美日韩综合综合二区| 97国产精品麻豆性色| 精品少妇一区二区三区免费| 中文字幕乱码亚洲精品一区| 亚洲熟妇少妇69| 国产偷闻隔壁人妻内裤av| 午夜福利视频一区二区二区| 国产福利视频在线观看| 国产精品6| 中国少妇和黑人做爰视频| 国产亚洲精品色婷婷97久久久| 巨胸喷奶水www视频网站| 制服丝袜天堂国产日韩| 国产日韩精品视频一区二区三区 | 欧美极品少妇无套实战| 人妻无码一区二区在线影院| 一区二区三区人妻在线| 绝顶高潮合集videos| 337人体做爰大胆视频| 国产亚洲精品hd网站| av在线播放中文专区| 又爽又黄又无遮挡网站| 国产精品第一二三区久久蜜芽| 国产精品亚洲精品日产久久久| 国产91色综合久久免费| 性色av浪潮av色欲av| 国产精品99精品一区二区三区∴| 视频一区二区三区国产| 伊人久久精品无码二区麻豆| 久久精品亚洲乱码伦伦中文| 米奇亚洲国产精品思久久| 与漂亮的女邻居少妇好爽| 无码日韩精品一区二区三区免费 | 久久综网色亚洲美女亚洲av| 全部孕妇毛片丰满孕妇孕交|