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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

参数控制c语言代码走向,C语言可变参数完全解读

發布時間:2024/9/19 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 参数控制c语言代码走向,C语言可变参数完全解读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文轉自:http://www.cnblogs.com/wangyonghui/archive/2010/07/12/1776068.html

一、是什么

我們學習C語言時最經常使用printf()函數,但我們很少了解其原型。其實printf()的參數就是可變參數,想想看,我們可以利用它打印出各種類型的數據。下面我們來看看它的原型:

int printf( const char* format, ...);

它的第一個參數是format,屬于固定參數,后面跟的參數的個數和類型都是可變的(用三個點“…”做參數占位符),實際調用時可以有以下的形式:

printf("%d",i);

printf("%s",s);

printf("the number is %d ,string is:%s", i, s);

那么它的原型是怎樣實現的呢?我今天在看內核代碼時碰到了vsprintf,花了大半天時間,終于把它搞的有點明白了。

二、先看兩個例子

不必弄懂,先大致了解其用法,繼續往下看。

①一個簡單的可變參數的C函數

在函數simple_va_fun參數列表中至少有一個整數參數,其后是占位符…表示后面參數的個數不定.。在這個例子里,所有輸入參數必須都是整數,函數的功能只是打印所有參數的值。

#include

#include

void simple_va_fun(int start, ...)

{

va_list arg_ptr;

int nArgValue =start;

int nArgCout=0;???? //可變參數的數目

va_start(arg_ptr,start); //以固定參數的地址為起點確定變參的內存起始地址。

do

{

++nArgCout;

printf("the %d th arg: %d\n",nArgCout,nArgValue);???? //輸出各參數的值

nArgValue = va_arg(arg_ptr,int);????????????????????? //得到下一個可變參數的值

} while(nArgValue != -1);

return;

}

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

{

simple_va_fun(100,-1);

simple_va_fun(100,200,-1);

return 0;

}

②格式化到一個文件流,可用于日志文件

FILE *logfile;

int WriteLog(const char * format, ...)

{

va_list arg_ptr;

va_start(arg_ptr, format);

int nWrittenBytes = vfprintf(logfile, format, arg_ptr);

va_end(arg_ptr);

return nWrittenBytes;

}

稍作解釋上面兩個例子。

從這個函數的實現可以看到,我們使用可變參數應該有以下步驟:

⑴在程序中用到了以下這些宏:

void va_start( va_list arg_ptr, prev_param );

type va_arg( va_list arg_ptr, type );

void va_end( va_list arg_ptr );

va在這里是variable-argument(可變參數)的意思.

這些宏定義在stdarg.h中,所以用到可變參數的程序應該包含這個頭文件.

⑵函數里首先定義一個va_list型的變量,這里是arg_ptr,這個變量是存儲參數地址的指針.因為得到參數的地址之后,再結合參數的類型,才能得到參數的值。

⑶然后用va_start宏初始化⑵中定義的變量arg_ptr,這個宏的第二個參數是可變參數列表的前一個參數,即最后一個固定參數.

⑷然后依次用va_arg宏使arg_ptr返回可變參數的地址,得到這個地址之后,結合參數的類型,就可以得到參數的值。

⑸設定結束條件,①是判斷參數值是否為-1。注意被調的函數在調用時是不知道可變參數的正確數目的,程序員必須自己在代碼中指明結束條件。②是調用宏va_end。

三、剖析可變參數真相

1. va_* 宏定義

我們已經知道va_start,va_arg,va_end是在stdarg.h中被定義成宏的, 由于1)硬件平臺的

不同 2)編譯器的不同,所以定義的宏也有所不同。下面看一下VC++6.0中stdarg.h里的代碼

(文件的路徑為VC安裝目錄下的\vc98\ include\stdarg.h)

typedef char *? va_list;

#define _INTSIZEOF(n) ((sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )

#define va_start(ap,v)? ( ap = (va_list)&v + _INTSIZEOF(v) )

#define va_arg(ap,t)??? ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )

#define va_end(ap)????? ( ap = (va_list)0 )

再來看看linux中的定義

typedef char *va_list;

#define __va_rounded_size(TYPE) (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))

#define va_start(AP, LASTARG) (AP=((char*)&(LASTARG) + __va_rounded_size (LASTARG))

void va_end (va_list);

#define va_end(AP) (AP= (char *)0)

#define va_arg(AP,TYPE) (AP+=__va_rounded_size(TYPE),\

*((TYPE *)(AP - __va_rounded_size (TYPE))))

要理解上面這些宏定義的意思,需要首先了解:

①棧的方向②參數的入棧順序③CPU的對齊方式④內存地址的表達方式。

2.棧——以Intel 32位的CPU為分析基礎

在Intel CPU中,棧的生長方向是向下的,即棧底在高地址,而棧頂在低地址;從棧底向棧頂看過去,地址是從高地址走向低地址的,因為稱它為向下生長,如圖。

從上面壓棧前后的兩個圖可明顯看到棧的生長方向,在Intel 32位的CPU中,windown或linux都使用了它的保護模式,ss指定棧所有在的段,ebp指向棧基址,esp指向棧頂。顯然執行push指令后,esp的值會減4,而pop后,esp值增加4。 棧中每個元素存放空間的大小決定push或pop指令后esp值增減和幅度。Intel 32位CPU中的棧元素大小為16位或32位,由定義堆棧段時定義。在Window和Linux系統中,內核代碼已定義好棧元素的大小為32位,即一個字長(sizeof(int))。因此用戶空間程棧元素的大小肯定為32位,這樣每個棧元素的地址向4字節對齊。

C語言的函數調用約定對編寫可變參數函數是非常重要的,只有清楚了,才更欲心所欲地控制程序。在高級程序設計語言中,函數調用約定有如下幾種,stdcall,cdecl,fastcall ,thiscal,naked call。cdel是C語言中的標準調用約定,如果在定義函數中不指明調用約定(在函數名前加上約定名稱即可),那編譯器認為是cdel約定,從上面的幾種約定來看,只有cdel約定才可以定義可變參數函數。下面是cdel約定的重要特征:如果函數A調用函數B,那么稱函數A為調用者(caller),函數B稱為被調用者(callee)。caller把向callee傳遞的參數存放在棧中,并且壓棧順序按參數列表中從右向左的順序;callee不負責清理棧,而是由caller清理。 我們用一個簡單的例子來說明問題,并采用Nasm的匯編格式寫相應的匯編代碼,程序段如下:

void callee(int a, int b)

{

int c = 0;

c = a +b;

}

void caller()

{

callee(1,2);

}

來分析一下在調用過程發生了什么事情。程序執行點來到caller時,那將要執行調用callee函數,在跳到callee函數前,它先要把傳遞的參數壓到棧上,并按右到左的順序,即翻譯成匯編指令就是push 2; push 1;

圖2

函數棧如圖中(a)所示。接著跳到callee函數,即指令call calle。CPU在執行call時,先把當前的EIP寄存器的值壓到棧中,然后把EIP值設為callee(地址),這樣,棧的圖變為如圖2(b)。程序執行點跳到了callee函數的第一條指令。C語言在函數調用時,每個函數占用的棧段稱為stack frame。用ebp來記住函數stack frame的起始地址。故在執行callee時,最前的兩條指令為:

push ebp

mov esp, ebp

經過這兩條語句后,callee函數的stack frame就建好了,棧的最新情況如圖2(c)所示。 函數callee定義了一個局部變量int c,該變量的儲存空間分配在callee函數占用的棧中,大小為4字節(insizeof int)。那么callee會在如下指令:

sub esp, 4

mov [ebp-4], 0

這樣棧的情況又發生了變化,最新情況如圖2(d)所示。注意esp總是指向棧頂,而ebp作為函數的stack frame基址起到很大的作用。ebp地址向下的空間用于存放局部變量,而它向上的空間存放的是caller傳遞過來的參數,當然編譯器會記住變量c相對ebp的地址偏移量,在這里為-4。跟著執行c = a + b語句,那么指令代碼應該類似于:

mov eax , [ebp +? 8] ;這里用eax存放第一個傳遞進來的參數,記住第一個參數與ebp的偏移量肯定為8

add eax,? [ebp + 12] ;第二個參數與ebp的偏移量為12,故計算eax = a+b

mov [ebp -4], eax? ;執行 c = eax, 即c = a+b

棧又有了新了變化,如圖2(e)。至此,函數callee的計算指令執行完畢,但還要做一些事情:釋放局部變量占用的棧空間,銷除函數的stack-frame過程會生成如下指令:

mov esp, ebp;把局部變量占用的空間全部略過,即不再使用,ebp以下的空間全部用于局部變量

pop ebp;彈出caller函數的stack-frame 基址

在Intel CPU里上面兩條指令可以用指令leave來代替,功能是一樣。這樣棧的內容如圖2(f)所示。最后,要返回到caller函數,因此callee的最后一條指令是

ret

ret指令用于把棧上的保存的斷點彈出到EIP寄存器,新的棧內容如圖2(g)所示。函數callee的調用與返回全部結束,跟著下來是執行call callee的下一條語句。

從caller函數調用callee前,把傳遞的參數壓到棧中,并且按從右到左的順序;函數返回時,callee并不清理棧,而是由caller清楚傳遞參數所占用的棧(如上圖,函數返回時,1和2還放在棧中,讓caller清理)。棧元素的大小為4個字節,每個參數占用棧空間大小為4字節的倍數,并且任何兩個參數都不能共用同一個棧元素。

從C語言的函數調用約定可知,參數列表從右向左依次壓棧,故可變參數壓在棧的地址比最后一個命名參數還大,如下圖3所示:

由圖3可知,最后一個命名參數a上面都放著可變參數,每個參數占用棧的大小必為4的倍數。因此:可變參數1的地址 = 參數a的地址 + a占用棧的大小,可變參數2的地址 = 可變參數1的地址 + 可變參數1占用棧的大小,可變參數3的地址 = 可變參數2的地址 + 可變參數2占用棧的大小,依此類推。如何計算每個參數占用棧的大小呢?

3.數據對齊問題

對于兩個正整數 x, n 總存在整數 q, r 使得

x = nq + r, 其中? 0<= r

q, r 是唯一確定的。q = [x/n], r = x - n[x/n]. 這個是帶余除法的一個簡單形式。在 c 語言中, q, r 容易計算出來: q = x/n, r = x % n.

所謂把 x 按 n 對齊指的是:若 r=0, 取 qn, 若 r>0, 取 (q+1)n. 這也相當于把 x 表示為:

x = nq + r', 其中 -n < r' <=0??????????????? //最大非正剩余

nq 是我們所求。關鍵是如何用 c 語言計算它。由于我們能處理標準的帶余除法,所以可以把這個式子轉換成一個標準的帶余除法,然后加以處理:

x+n = qn + (n+r'),其中 0

x+n-1 = qn + (n+r'-1), 其中 0<= n+r'-1

所以 qn = [(x+n-1)/n]n. 用 c 語言計算就是:

((x+n-1)/n)*n

若 n 是 2 的方冪, 比如 2^m,則除為右移 m 位,乘為左移 m 位。所以把 x+n-1 的最低 m 個二進制位清 0就可以了。得到:

(x+n-1) & (~(n-1))

根據這些推導,相信已經了解#define __va_rounded_size(TYPE)? (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))的涵義。

4.再看va_* 宏定義

va_start(va_list ap, last)

last為最后一個命名參數,va_start宏使ap記錄下第一個可變參數的地址,原理與“可變參數1的地址 = 參數a的地址 + a占用棧的大小”相同。從ap記錄的內存地址開始,認為參數的數據類型為type并把它的值讀出來;把ap記錄的地址指向下一個參數,即ap記錄的地址 += occupy_stack(type)

va_arg(va_lit ap, type)

這里是獲得可變參數的值,具體工作是:從ap所指向的棧內存中讀取類型為type的參數,并讓ap根據type的大小記錄它的下一個可變參數地址,便于再次使用va_arg宏。從ap記錄的內存地址開始,認為存的數據類型為type并把它的值讀出來;把ap記錄的地址指向下一個參數,即ap記錄的地址 += occupy_stack(type)

va_end(va_list ap)

用于“釋放”ap變量,它與va_start對稱使用。在同一個函數內有va_start必須有va_end。

5.可變參數函數問題

考慮了參數大小和數據對齊問題,使得可變參數的類型不但可以是基本類型,同樣適用于用戶定義類型。值的注意的是,如果是用戶定義類型,最好用typedef定義的名字作為類型名,這樣就會減少在va_arg進行宏展開時出錯的機率。

在可變參數函數中,由va_list變量來記錄(或獲得)可變參數部分,但是va_list中并沒有記錄下它們的名字,事實上也是不可能的。要想把可變參數部分傳遞給下一個函數,唯有通過va_list變量去傳遞,而原來定義的函數用"..."來表示可變參數部分,而不是用va_list來表示。為了方便程序的標準化,ANSIC在標準庫代碼中就作出了很好的榜樣:在任何形如: type fun( type arg1, type arg2, ...)的函數,都同時定義一個與它功能完全一樣的函數,但用va_list類型來替換"...",即type fun(type arg1, type arg2, va_list ap)。以printf函數為例:

int printf(const char *format, ...);

int vprintf(const char *format, va_list ap);

第一個函數用"..."表示可變參數,第二個用va_list類型表示可變參數,目的是用于被其它可變參數調用,兩者在功能功能上是完全上一樣。只是在函數名字相差一個'"v"字母。

四、可變參數函數的應用

一個中的例子:一個簡單的實現printf函數的例子:

#include

#include

#include

/* minprintf: minimal printf with variable argument list */

void minprintf(char *fmt, ...)

{

va_list ap; /* points to each unnamed arg in turn */

char *p, *sval;

int ival;

double dval;

va_start(ap, fmt); /* make ap point to 1st unnamed arg */

for (p = fmt; *p; p++) {

if (*p != '%') {

putchar(*p);

continue;

}

switch (*++p) {

case 'd':

ival = va_arg(ap, int);

printf("%d", ival);

break;

case 'x':

ival=va_arg(ap,int);

printf("%#x",ival);

break;

case 'f':

dval = va_arg(ap, double);

printf("%f", dval);

break;

case 's':

for (sval = va_arg(ap, char *); *sval; sval++)

putchar(*sval);

break;

default:

putchar(*p);

break;

}

}

va_end(ap); /* clean up when done */

}

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

{

int i = 1234;

int j = 5678;

char *s="nihao";

double f=0.11f;

minprintf("the first test:i=%d\n",i,j);

minprintf("the secend test:i=%d; %x;j=%d;",i,0xabcd,j);

minprintf("the 3rd test:s=%s\n",s);

minprintf("the 4th test:f=%f\n",f);

minprintf("the 5th test:s=%s,f=%f\n",s,f);

system("pause");

return 0;

}

不使用va_*宏定義的實現:

void minprintf(char* fmt, ...) //一個簡單的類似于printf的實現不過參數必須都是int 類型

{

char* pArg=NULL;?????????????? //等價于原來的va_list

char c;

pArg = (char*) &fmt; //注意不要寫成p = fmt !因為這里要對//參數取址,而不是取值

pArg += sizeof(fmt);???????? //等價于原來的va_start

do

{

c =*fmt;

if (c != '%')

{

putchar(c);??????????? //照原樣輸出字符

}

else

{

//按格式字符輸出數據

switch(*++fmt)

{

case 'd':

printf("%d",*((int*)pArg));

break;

case 'x':

printf("%#x",*((int*)pArg));

break;

default:

break;

}

pArg += sizeof(int);?????????????? //等價于原來的va_arg

}

++fmt;

}while (*fmt != '\0');

pArg = NULL;?????????????????????????????? //等價于va_end

return;

}

五、參考引用:

感謝以上?!

總結

以上是生活随笔為你收集整理的参数控制c语言代码走向,C语言可变参数完全解读的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产亚洲观看 | 91精品国产一区 | 五月婷婷六月丁香在线观看 | 黄色的视频网站 | 亚洲日本一区二区在线 | 亚洲视频综合在线 | 五月天久久婷婷 | 日韩剧情| 免费高清av在线看 | 免费一级片观看 | 欧洲一区二区三区精品 | 久久免费视频国产 | av久久在线 | 六月丁香激情网 | 国产在线观看黄 | 精品国产一区二区三区四区vr | 激情综合六月 | 久久私人影院 | 国产艹b视频 | 九九激情视频 | 成人av观看 | 久草在线久 | 人人爽人人爽人人片av | 久久久久在线观看 | 国产精品mv在线观看 | 国产999久久久 | 亚洲欧美国产精品 | 久在线 | 国产精品久久久亚洲 | 成人av免费在线 | 国产精品一区二区麻豆 | 91av原创| 天天综合网在线观看 | 久草视频在线播放 | 亚洲视频一级 | 狠狠干狠狠久久 | 欧美久久久久久久久久久久久 | 中文字幕色在线 | 99精品视频在线观看播放 | 粉嫩av一区二区三区四区在线观看 | 欧美日韩一区二区在线观看 | 国产 日韩 欧美 中文 在线播放 | 黄色片视频在线观看 | 91精品爽啪蜜夜国产在线播放 | 一级片免费视频 | 久久精品欧美日韩精品 | 91成品人影院 | 欧美国产日韩在线视频 | 91精品视频在线免费观看 | 精品视频成人 | 特级a老妇做爰全过程 | 人人爽人人看 | 91免费观看视频网站 | 午夜精品久久久久久久久久 | 西西www4444大胆在线 | 色婷婷久久久综合中文字幕 | 日韩天天操| 日本一区二区不卡高清 | 国产精品国产亚洲精品看不卡 | 久草在线视频在线观看 | 一级片免费在线 | 在线中文字幕网站 | 91成人网页版 | 亚洲四虎影院 | 成人久久免费 | 国产系列 在线观看 | 中文字幕一区二区三区精华液 | 成人免费在线电影 | 久久久精品国产免费观看一区二区 | 欧美 亚洲 另类 激情 另类 | 免费视频91蜜桃 | 97天天综合网| 中文字幕五区 | 久久精品香蕉视频 | 999视频在线播放 | 欧美激情视频在线免费观看 | 91成人网页版| 色偷偷网站视频 | 国产成人亚洲精品自产在线 | 精品九九九 | 国产美女主播精品一区二区三区 | 久久精品亚洲精品国产欧美 | 久草久草视频 | 欧美国产日韩一区二区三区 | 国产精品网红直播 | 91视频在线 | 六月天综合网 | 精品欧美乱码久久久久久 | 精品久久久久免费极品大片 | 婷婷五月情 | 国内成人精品2018免费看 | 蜜臀aⅴ国产精品久久久国产 | 国产精品密入口果冻 | 国产在线观看不卡 | 美女免费网视频 | 91黄色小网站 | 久久国产精品久久精品国产演员表 | 亚洲精品国产精品国自 | 人人爽人人爽人人片av免 | 久草网视频 | 日韩成人免费在线电影 | 天天操天天爱天天干 | 久久精品国产精品亚洲精品 | 久久久久国产成人精品亚洲午夜 | 精品毛片在线 | 色婷婷福利| 91亚洲精品久久久蜜桃网站 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 久久伊人五月天 | 国产三级国产精品国产专区50 | 少妇搡bbbb搡bbb搡aa | 韩日精品在线 | www.久久久com | 精品国产视频在线观看 | 国产成人一区二区三区在线观看 | 精品国产乱码一区二区三区在线 | 黄色综合 | 国产在线免费 | 国产色拍拍拍拍在线精品 | 国产99久久久国产 | 亚洲午夜av久久乱码 | 免费亚洲一区二区 | 人人讲下载 | 亚洲va男人天堂 | 天天操天天干天天干 | 欧美aa一级| 成人国产精品久久久久久亚洲 | 国产1级视频 | 中文字幕在线观看网站 | 成人免费观看大片 | 日韩在线观看视频一区二区三区 | 欧美日韩一区二区在线观看 | 视频一区在线免费观看 | 欧美 亚洲 另类 激情 另类 | 亚洲成人av在线电影 | 91九色老 | 久久精品视频在线观看免费 | 黄色av观看| 日韩影视在线观看 | 成人黄视频 | 国产一二区免费视频 | 久草在线中文视频 | 最近中文字幕大全 | 欧美美女视频在线观看 | 91亚洲精 | 狠狠躁夜夜躁人人爽超碰97香蕉 | www.五月天婷婷 | 国产麻豆果冻传媒在线观看 | 日韩精品久久一区二区三区 | 国产午夜在线观看视频 | 国内精品久久久久 | 在线视频福利 | 日日操日日插 | 高清av在线免费观看 | 国产我不卡 | 丁香伊人网 | 国产一区视频免费在线观看 | 国产精品乱码久久久久 | 在线小视频国产 | 亚洲一级国产 | 日韩免费电影网站 | 91高清一区 | 91丨九色丨蝌蚪丨老版 | 亚洲在线视频免费观看 | 国产在线精品国自产拍影院 | 99久久综合狠狠综合久久 | 日韩视频a| 中文字幕资源网在线观看 | 国产婷婷 | 日韩高清三区 | 人成在线免费视频 | 永久免费的啪啪网站免费观看浪潮 | 日本电影久久 | 精品色999| 国产在线视频一区二区三区 | 久久国产精品99久久久久久丝袜 | 国产成人av免费在线观看 | 久久五月婷婷综合 | 亚洲传媒在线 | 黄色a视频免费 | 伊人狠狠色丁香婷婷综合 | 看片的网址 | 久草精品网 | 色视频网站免费观看 | 激情婷婷在线观看 | 人人爱人人添 | 日韩精品国产一区 | 久久精品福利视频 | 麻豆视频免费播放 | 91色影院 | 99久e精品热线免费 99国产精品久久久久久久久久 | 丝袜制服天堂 | 99视频久久 | 999一区二区三区 | www.国产毛片 | 美腿丝袜一区二区三区 | 久久综合久久久久88 | 欧美日韩在线视频观看 | 国产黄网站在线观看 | 精品国产一区二区三区久久久蜜臀 | 91天天操 | 日韩精品一区二区三区免费视频观看 | 精品在线播放视频 | 亚洲女同ⅹxx女同tv | 日日天天狠狠 | 中文字幕免费国产精品 | 日韩a级黄色 | 久久久久久亚洲精品 | 天堂av观看 | 波多野结衣最新 | 韩国三级一区 | 一级淫片a| 黄色av电影 | 午夜精品影院 | 9999精品视频 | 精品久久久免费视频 | 日本中文乱码卡一卡二新区 | 欧美日韩国内在线 | 久久天天躁狠狠躁亚洲综合公司 | 手机在线看a | 亚洲日本在线一区 | 日韩手机视频 | 99久久er热在这里只有精品66 | 国产小视频免费观看 | 久久九九精品久久 | av在线免费观看黄 | 亚洲国产精品成人av | 久久爱导航 | 国产精品专区在线 | 毛片网站观看 | 日日夜色 | 97精品视频在线 | 国产中年夫妇高潮精品视频 | 蜜臀av性久久久久蜜臀av | 日韩精品久久久免费观看夜色 | 亚洲电影久久久 | 久久精品人人做人人综合老师 | 国产精品2019| 91麻豆精品国产91久久久无需广告 | 午夜精品一区二区三区在线播放 | 亚洲成a人片综合在线 | 免费看黄网站在线 | 国产 一区二区三区 在线 | 国产精品成人免费 | 激情网五月天 | 亚洲综合成人专区片 | 久久伊人婷婷 | 国产尤物视频在线 | 免费婷婷| 深爱激情五月网 | 久久激情综合网 | 久久久国产精华液 | 91视频91色| 久久96国产精品久久99软件 | 中文字幕成人 | 激情五月婷婷 | 中文字幕专区高清在线观看 | 午夜av免费观看 | 五月天中文在线 | 久久九九免费视频 | 婷婷av网| 日本mv大片欧洲mv大片 | av在线电影网站 | 国产一二区免费视频 | 午夜视频导航 | 亚洲欧美国内爽妇网 | 欧美精品在线一区 | 国产日韩视频在线观看 | 激情视频综合网 | 五月天激情婷婷 | 国产日本在线观看 | 激情小说久久 | 国产精品久久久久久久久久白浆 | 国产精品免费观看网站 | 亚洲欧美日韩不卡 | www久草 | 中文字幕永久在线 | av中文字幕在线播放 | 深爱激情五月综合 | 国产一区在线视频 | 成人av网站在线观看 | 国产精品18久久久久久久网站 | 亚洲成熟女人毛片在线 | 国产精品福利无圣光在线一区 | 国产精品嫩草55av | 最近中文字幕大全 | 久久不射电影院 | 中文字幕在线观看1 | 91九色在线播放 | 一性一交视频 | 中文字幕在线观看播放 | 色丁香综合| 天天操天天干天天操天天干 | 精品视频区 | 成人小视频在线 | 中文字幕第一 | 久久久久免费精品国产 | 伊人黄| 亚洲人成综合 | 丁五月婷婷 | 手机av资源| 91传媒视频在线观看 | 亚洲精品乱码久久久久久蜜桃不爽 | 国产成人福利在线观看 | 成人av网站在线播放 | 午夜私人影院 | 国产一区精品在线观看 | 亚洲色图av | 久久久久国产精品午夜一区 | 亚洲日本va午夜在线影院 | 日韩在线第一 | 毛片二区 | 欧美成人在线免费 | 亚洲作爱 | 五月婷婷激情网 | 国产在线精品一区二区 | 成人wwwxxx视频 | 在线国产小视频 | 婷婷丁香激情五月 | 精品亚洲免费 | 久久久久免费精品国产 | 五月亚洲婷婷 | 久久久受www免费人成 | 国产一级电影免费观看 | 久久精品香蕉 | 午夜久久网站 | 天天操天天谢 | 日韩av网站在线播放 | 国产理论一区二区三区 | 二区视频在线观看 | 国产精品一区二区中文字幕 | 免费高清在线视频一区· | 成人黄色国产 | 久草精品在线播放 | 国产精品久久久777 成人手机在线视频 | 成人在线小视频 | 婷婷五月在线视频 | 中文字幕av免费在线观看 | 日日干美女 | 91精品视频免费 | 成人理论在线观看 | av一区在线 | 久久久久亚洲国产 | 国产成人久久久77777 | 国产精品欧美久久久久无广告 | 中文字幕av最新 | 日韩在线第一区 | 岛国精品一区二区 | 狠狠干网| 国产精品久久婷婷六月丁香 | 久草在线中文视频 | 亚洲精品成人 | 亚洲日韩欧美一区二区在线 | 美女在线观看av | 久久久久久久久久久久亚洲 | 亚洲精品国产品国语在线 | 国产在线探花 | 久久午夜免费视频 | 91精品免费在线视频 | 日韩美在线观看 | 天天色图| 99久久精品免费看 | 久久亚洲电影 | 天天色天天干天天 | 毛片网在线 | h视频日本 | 成人av网站在线观看 | 国产91精品一区二区绿帽 | 亚洲精品免费观看 | japanesexxx乱女另类 | 97av免费视频 | 国产成人一二三 | 欧美analxxxx| 日韩欧美在线中文字幕 | 久久只精品99品免费久23小说 | 亚洲色图 校园春色 | 成人免费观看视频网站 | 精品一区二区视频 | 91精品国自产在线观看欧美 | 黄色小说视频在线 | 欧美性黄网官网 | 欧美成人aa | 日韩成人在线一区二区 | 久久精品99久久久久久 | 99精品视频免费在线观看 | 国产成人久久精品77777 | 在线中文视频 | 成年人免费在线播放 | 免费国产黄线在线观看视频 | 久久国产女人 | 女女av在线| 99精品在线 | 成人一区二区三区在线 | 在线中文字幕av观看 | 97在线公开视频 | 久久久久亚洲精品成人网小说 | 亚洲高清色综合 | 国产精品成人久久久久久久 | 最近更新的中文字幕 | 欧美精品久久99 | 超碰国产在线 | 久久草av| 91传媒免费在线观看 | 精品久久久久久久久中文字幕 | 99视屏| 18久久久久久 | 中文字幕观看av | 国产在线理论片 | 精品日韩在线 | 亚洲 中文 欧美 日韩vr 在线 | 日韩大片免费观看 | 日韩无在线 | 区一区二区三区中文字幕 | 国产精品久久久久婷婷二区次 | 欧美极品久久 | 五月婷香蕉久色在线看 | 久久99精品国产麻豆宅宅 | 四虎成人精品永久免费av | 欧美天天射 | 国产精品99久久久久的智能播放 | 亚洲精品国产日韩 | 午夜精品久久久久久久久久 | 精品日韩av | 国产69精品久久久久99尤 | 亚洲黄色免费网站 | 西西www4444大胆视频 | 成人av免费在线看 | 91麻豆国产福利在线观看 | 成人一区电影 | 综合在线色| 久久在线观看 | 天天干一干 | 中文字幕精品一区久久久久 | 欧美亚洲成人免费 | 精品国产综合区久久久久久 | 亚洲少妇xxxx | www.色爱 | 国产精品大片在线观看 | 日本爱爱免费视频 | h文在线观看免费 | 久久人人爽人人爽人人 | av在线a| 久久精品免费电影 | 国产成人三级一区二区在线观看一 | 国产色视频网站 | 国产手机在线观看 | 97色在线观看| 久久人人爽人人爽人人 | 久久在线观看视频 | 亚洲精品一区二区三区四区高清 | 久久天堂亚洲 | 国产精品黄色 | 一区二区三区久久 | 亚洲成av人片一区二区梦乃 | 日韩精品一区二区三区外面 | 欧美天天干 | 成人国产一区 | 91尤物国产尤物福利在线播放 | 免费精品 | 一区二区三区不卡在线 | 婷婷伊人网 | 久久精品视频中文字幕 | 国产成人精品一区二区三区在线观看 | 一区免费视频 | 成人免费一区二区三区在线观看 | 久久人人爽人人爽人人片av软件 | 国产特级毛片aaaaaaa高清 | 国产亚洲视频在线 | 国产成人福利在线观看 | 日韩欧美在线高清 | 天天操天天摸天天爽 | 国产视频在线观看一区二区 | 久久久精品亚洲 | 国产一级黄色免费看 | 91av在线播放视频 | 91色九色 | 狠狠狠色狠狠色综合 | 中文字幕 国产视频 | 色综合天天综合网国产成人网 | 亚洲视频免费在线 | 国产精品1区2区在线观看 | 不卡视频在线 | 一区二区视频免费在线观看 | 日日摸日日添夜夜爽97 | 久久综合色天天久久综合图片 | 久久久久美女 | 欧美另类高清 | 中文字幕精品一区久久久久 | 欧美一二三四在线 | 国产一区二区三区免费观看视频 | 国产呻吟在线 | 日韩在线观看你懂的 | 国产精品不卡在线 | 欧美aaa大片| 91中文字幕在线视频 | 国产福利91精品一区 | 久久视频一区二区 | av一区二区三区在线播放 | 成年人在线观看 | 亚洲国产精品第一区二区 | 亚洲精品玖玖玖av在线看 | 日本精品久久久久中文字幕 | 久久精品香蕉 | 视频在线观看入口黄最新永久免费国产 | 美腿丝袜一区二区三区 | 人人插人人插 | 国产日韩亚洲 | 97超碰在线播放 | 国产一区在线播放 | 国产精国产精品 | 国产精品视频内 | 日韩欧美不卡 | 国产成人免费av电影 | 免费观看9x视频网站在线观看 | 日韩免费在线观看视频 | 亚洲一区免费在线 | 国产精品va在线观看入 | 在线播放日韩av | 成年人三级网站 | 亚洲国产三级在线 | 超黄视频网站 | 日本三级不卡 | 成人在线播放视频 | 亚洲精品久久久蜜桃直播 | 91精品国产成 | av一本久道久久波多野结衣 | 欧美视频日韩视频 | 国产精品久久久久久久毛片 | 国产原创中文在线 | 福利视频一区二区 | 久久tv | 99riav1国产精品视频 | 久久九九久久九九 | 国产特级毛片aaaaaa | 中文字幕在线观看完整版 | 五月激情片 | 精品免费视频 | 美国av片在线观看 | 黄色在线看网站 | 午夜视频免费 | 成人精品一区二区三区电影免费 | 亚洲人成网站精品片在线观看 | 国产无套一区二区三区久久 | 一本大道久久精品懂色aⅴ 五月婷社区 | 在线av资源 | 色a资源在线 | 欧美日韩一区三区 | 特级西西444www大胆高清无视频 | 国产九色在线播放九色 | 97视频播放 | 久久99久久久久久 | 日日干av | 在线亚洲精品 | 99视频偷窥在线精品国自产拍 | 91看片麻豆 | 午夜视频在线观看一区二区 | 在线国产激情视频 | 免费在线播放av电影 | 久久人人爽人人 | 黄色国产高清 | 久久理论视频 | 久久婷婷国产 | 久久久久久国产精品亚洲78 | 成人免费视频在线观看 | 国产最新在线 | 在线黄色免费 | 成人影片在线播放 | 久草在线视频免费资源观看 | 国产精品久久久一区二区 | 最近更新中文字幕 | 成人禁用看黄a在线 | 亚洲欧美日本一区二区三区 | 天天干 夜夜操 | 一区二区三区免费网站 | 久久久www成人免费毛片麻豆 | 精品91在线 | 日韩中文字幕网站 | 五月婷香蕉久色在线看 | 久久伦理| 久久国产精品区 | 国产成人91 | 国产短视频在线播放 | 国产美女视频一区 | 91精品天码美女少妇 | 91福利免费 | 成人国产精品久久久春色 | 欧美一级片免费观看 | 九色自拍视频 | 国产精品久久久久永久免费看 | 亚洲视频999 | 香蕉视频国产在线 | 日韩综合视频在线观看 | 狠狠的干狠狠的操 | 在线av资源 | 91理论电影 | 欧美色婷婷| 国产一区二区三区 在线 | 一区二区三区在线免费观看视频 | 96看片 | 在线观看久草 | 欧美精彩视频 | 在线视频 区 | 日本免费久久高清视频 | 中文字幕在线免费观看 | 国产高清视频在线免费观看 | 亚洲精品视频久久 | 亚洲欧洲精品久久 | 91污视频在线 | 亚洲精品av中文字幕在线在线 | 久草免费电影 | 一级黄视频 | 不卡的av电影 | 欧美孕妇视频 | 一区二区三区高清不卡 | 成人免费在线视频观看 | 婷婷色综 | 在线观看黄网 | 六月色丁香 | 中文字幕在线观看完整版电影 | 国产一区二区不卡在线 | 国产91免费观看 | 亚洲国产成人精品电影在线观看 | 久久看片| 久久精品国产免费 | 精壮的侍卫呻吟h | 亚洲经典视频在线观看 | 2024国产精品视频 | 国产麻豆视频在线观看 | 国产精品久久久av | 色99中文字幕 | 九草视频在线 | 5月丁香婷婷综合 | 亚洲无吗av | 天堂网在线视频 | 久久人人97超碰精品888 | 五月婷婷视频在线 | 日韩午夜在线播放 | 免费精品人在线二线三线 | 五月婷婷深开心 | 国产第一福利网 | 久久成人18免费网站 | avove黑丝| 欧美天堂久久 | 久久精品国产一区 | 精品久久久久久国产 | 久久综合九色欧美综合狠狠 | 精品一区二区在线免费观看 | 久久久久久久久久免费视频 | 久久看视频 | 天天操天天爱天天爽 | av久久在线 | 精品免费国产一区二区三区四区 | 999成人精品 | 久久久久久综合网天天 | av.com在线| 亚洲一级二级 | 激情视频免费观看 | 日韩激情免费视频 | 天天天综合网 | se婷婷| 久久69av | 91av在线免费看 | 日韩中文字幕电影 | 91私密保健 | 婷婷香蕉 | 国产黄色av | 色中色亚洲 | 中文资源在线官网 | 91视频在线免费 | 99热在线国产 | 国产成人精品一区二 | 91亚州| 亚洲成a人片综合在线 | 日本狠狠干 | 久久99精品久久久久久秒播蜜臀 | 99免费在线观看 | www.看片网站| 国产精品 日韩 欧美 | 天天艹天天操 | 国内精品久久久久久久影视麻豆 | 国产精品黄色 | 在线视频福利 | 精品自拍网| 免费网站在线观看人 | 亚洲欧洲国产日韩精品 | 欧美综合在线视频 | 国产破处在线播放 | 久久久久久久久久影院 | 欧美成人一二区 | 伊人色综合网 | 国产区精品区 | 中文字幕在线观看完整版 | 久久久麻豆精品一区二区 | 免费看的国产视频网站 | 香蕉影视在线观看 | 伊人色综合久久天天 | 日韩特级毛片 | 久久久久电影网站 | 九九视频这里只有精品 | 天天操狠狠操 | 夜夜婷婷 | 成人黄色资源 | 精品九九九九 | 日韩视频三区 | 99精品久久久久 | 在线免费视频 你懂得 | 久久在线影院 | 2021国产在线 | 日韩免费观看一区二区 | 一区二区视频欧美 | 国产少妇在线观看 | 手机看片久久 | 操久在线 | 国产精品毛片一区视频播不卡 | 久久你懂得| 精品国产伦一区二区三区观看体验 | 最新av免费在线 | 一区二区三区在线免费播放 | 国产精品美女视频网站 | 国产二区精品 | 黄色小说免费在线观看 | 久久视频在线看 | www.色com | 免费看成人片 | 青青河边草观看完整版高清 | 日韩黄色免费电影 | 亚洲 欧美 国产 va在线影院 | 黄色精品免费 | 久久九九九九 | 色婷婷国产在线 | 日韩不卡高清视频 | 超碰人人射 | 久久tv| 亚洲视频播放 | 免费日韩三级 | 色综合婷婷 | 水蜜桃亚洲一二三四在线 | 免费av小说 | 国产精品美女久久 | 国偷自产中文字幕亚洲手机在线 | 日韩午夜精品福利 | 91av视频免费观看 | 四虎在线视频免费观看 | 亚洲aaa毛片 | 久久一久久 | 欧美一级特黄高清视频 | 国产精品1区2区3区在线观看 | 国产三级国产精品国产专区50 | 人人玩人人添人人 | 中文字幕高清有码 | 特级西西444www大胆高清无视频 | 亚洲国产视频网站 | 国产群p视频 | 久久精久久精 | 午夜精品导航 | 五月黄色 | 精品视频不卡 | 玖玖玖在线 | 九九视频在线播放 | 夜夜骑天天操 | 麻豆视频在线免费 | 一区二区三区久久 | 精品视频在线免费 | 高潮毛片无遮挡高清免费 | 久久国语露脸国产精品电影 | 伊人午夜视频 | www夜夜操com | 久久区二区 | 成人黄大片 | a在线观看视频 | 丁香激情综合久久伊人久久 | 三级av在线免费观看 | 特级西西www44高清大胆图片 | 国产99精品在线观看 | 欧美福利片在线观看 | 色网站中文字幕 | 在线观看亚洲国产精品 | 99亚洲精品 | 日韩免费在线播放 | 丝袜少妇在线 | 一级片色播影院 | 日韩在线小视频 | 久久一精品 | 国产91精品一区二区 | 99精品久久99久久久久 | 天天操天天干天天摸 | av中文字幕在线看 | 精品亚洲国产视频 | 久久免费试看 | 天天干天天玩天天操 | 国产不卡在线看 | 黄色资源网站 | 日韩大片在线免费观看 | 精品无人国产偷自产在线 | 福利一区二区三区四区 | 久色 网 | 色黄www小说 | 黄色免费观看网址 | 国产精品久久久久aaaa | 国产成人精品a | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 日韩一区二区三免费高清在线观看 | 在线观看视频中文字幕 | 久久激情小说 | 狠狠狠狠干 | 视频三区在线 | 国产色婷婷精品综合在线手机播放 | 国产中文字幕三区 | 国产一级免费片 | 亚洲综合色丁香婷婷六月图片 | 最新中文字幕在线播放 | 97香蕉视频 | 免费在线观看av网址 | 久久综合九色综合97婷婷女人 | 在线视频一二区 | 最近免费观看的电影完整版 | 麻豆播放 | 六月激情久久 | 国产一区二区视频在线播放 | 亚洲成人一区 | 在线亚洲日本 | 成人91av | 国产精品99久久99久久久二8 | 欧美一区二区在线免费观看 | 久久久高清一区二区三区 | 久久综合之合合综合久久 | 99在线视频网站 | 欧美成年人在线观看 | 精品美女久久久久久免费 | 中文字幕在线免费 | 久久国产亚洲精品 | 亚洲精品国产品国语在线 | 欧美日韩国产二区三区 | 日韩精品高清不卡 | 欧美一级黄大片 | 日本深夜福利视频 | 黄色三级免费片 | 欧美成人精品xxx | 97精品超碰一区二区三区 | 欧美激情视频一区二区三区免费 | 婷婷5月激情5月 | 欧美午夜理伦三级在线观看 | 欧美精选一区二区三区 | 亚洲欧洲在线视频 | 国产福利小视频在线 | 男女啪啪视屏 | 精品一区二区影视 | 五月开心网 | 免费电影一区二区三区 | 一区二区三区四区五区在线 | 欧美午夜a | 九九九九热精品免费视频点播观看 | 亚洲第一色 | 天堂av影院 | 色婷婷 亚洲| a在线观看国产 | 日韩欧三级 | 在线观看第一页 | 欧美日韩色婷婷 | 国产美女精品久久久 | 在线黄色免费av | 欧美 日韩 国产 中文字幕 | 国产综合在线观看视频 | 日韩动漫免费观看高清完整版在线观看 | 欧美aa一级片 | 天天爽人人爽夜夜爽 | 天天色天天综合网 | 国产伦精品一区二区三区… | 片黄色毛片黄色毛片 | 国产黄| 国产手机在线播放 | 婷婷综合成人 | 在线免费黄网站 | 在线看一区二区 | 欧美色伊人 | 国产精品视频线看 | 国产精品毛片一区二区 | 黄色片网站 | 2022中文字幕在线观看 | 国际精品网| 中文字幕av在线免费 | 狠狠干狠狠插 | 欧美色图另类 | 亚洲久在线 | 日本精品久久久久中文字幕 | 在线免费观看视频你懂的 | 国产精品九九热 | 亚洲激色 | 四虎成人免费影院 | av丝袜在线| 国产一区精品在线 | 国产97在线视频 | 国产亚洲小视频 | 成人avav| 久久美女免费视频 | 在线观看欧美成人 | 亚洲年轻女教师毛茸茸 | 精品国产a| www.久久com| 国产小视频在线播放 | 成人黄色小视频 | 波多野结衣一区二区 | 三级av免费看 | 色wwww| 久操操 | 国产视频 亚洲视频 | 中文字幕国产精品一区二区 | 91av视频导航 | 中文字幕在线观看你懂的 | 欧美成人h版电影 | 这里只有精品视频在线 | 国产精选在线观看 | 久久99在线视频 | www·22com天天操| 国产香蕉视频在线观看 | 精品99久久久久久 | 婷婷色伊人| 国产色影院 | 国产精品久久久久久久毛片 | 国产精品video爽爽爽爽 | 久久99精品国产麻豆婷婷 | 91正在播放 | 精品久久久久久久久久岛国gif | 久久久精品视频网站 | 91精品啪在线观看国产线免费 | 91麻豆精品国产91 | 久久综合影音 | 一色av| 欧美日本啪啪无遮挡网站 | 18久久久久 | 99国产精品久久久久久久久久 | 91丨九色丨蝌蚪丰满 | 97理论片| 免费av网站在线看 | 在线观看视频免费大全 | 国产精品一区二区三区电影 | 国产麻豆精品传媒av国产下载 | 色综合欧洲 | 国产日韩精品一区二区三区在线 | 深夜免费福利 | 亚洲最大av网站 | 手机av在线不卡 | www日 | 在线观看的黄色 | 日韩精品一区二区三区不卡 | 91丨九色丨蝌蚪丨对白 | 西西444www大胆高清图片 | 国产成人精品免高潮在线观看 | 91亚色视频在线观看 | 天天爱综合 | 亚洲精品tv | 天天色中文| 精品国产不卡 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 亚洲永久精品在线观看 | 黄色毛片观看 | 婷婷色网视频在线播放 | 国产日韩一区在线 | 久久手机视频 | av怡红院 | 欧美日韩一区二区三区在线观看视频 | 亚洲伦理电影在线 | 国产精品理论片在线播放 | 成人免费在线视频 | 国产精品无av码在线观看 | 日韩中文字幕91 | 午夜婷婷在线播放 | 久一久久| 色在线最新 | 狠狠狠狠干 | 国产成人精品一区二三区 | 五月婷婷导航 | 少妇超碰在线 | 美女福利视频网 | 欧美性极品xxxx做受 | 精品在线观看一区二区三区 | 91高清在线| 久久久国产影院 | 超碰人人在线观看 | 国产美女免费 | 免费看毛片网站 | 99re视频在线观看 | .国产精品成人自产拍在线观看6 | 综合色中色 | 欧美日韩18 | 成人黄色视 | 欧美人体xx | 天天躁天天操 | 精品成人在线 | 日韩三区在线 | 精品久久久久免费极品大片 | 国产91影院| 亚洲aⅴ在线 | av一区二区在线观看中文字幕 | 黄色电影在线免费观看 | 久久久久国产一区二区三区 | 欧美国产日韩激情 | 激情婷婷av |