第一篇:c語(yǔ)言中可變參數(shù)函數(shù)設(shè)計(jì)方案
c語(yǔ)言中可變參數(shù)函數(shù)的設(shè)計(jì)
c語(yǔ)言中可變參數(shù)函數(shù)的設(shè)計(jì)
c語(yǔ)言中可變參數(shù)函數(shù)的設(shè)計(jì)
-----最近想好好學(xué)學(xué)這個(gè), 先把網(wǎng)上搜集得資料貼上.========================
參數(shù)可變函數(shù)的實(shí)現(xiàn)(上)CSDN Blog推出文章指數(shù)概念,文章指數(shù)是對(duì)Blog文章綜合評(píng)分后推算出的,綜合評(píng)分項(xiàng)分別是該文章的點(diǎn)擊量,回復(fù)次數(shù),被網(wǎng)摘收錄數(shù)量,文章長(zhǎng)度和文章類(lèi)型;滿分100,每月更新一次。
此文獻(xiàn)給如我一般還在探索C語(yǔ)言之路的朋友們。
注:本文中測(cè)試程序的編譯環(huán)境為win2000和VC6.0 緣起:
作為一個(gè)程序員,我沒(méi)有寫(xiě)過(guò)參數(shù)可變的函數(shù),我相信大部分朋友也沒(méi)有涉及過(guò),或者我的境界層次太低了。那么緣何我要去揭這一層面紗呢?因?yàn)楹闷妫?/p>
我是個(gè)思維具有極大惰性的人,曾經(jīng)識(shí)得參數(shù)可變函數(shù),也懶得去深究,但是它的三點(diǎn)(函數(shù)聲明時(shí)參數(shù)列表中的“…”)卻深刻的映入/ 20 了我的記憶里,而且是帶著若干個(gè)閃耀的問(wèn)號(hào)。可是就在昨天,在拜讀某君的高論時(shí),它再一次出現(xiàn)了。我的資質(zhì)真的是不太夠,因?yàn)槟尘谡劦剿鼤r(shí)只是給出了
破題:
但凡所謂“實(shí)現(xiàn)”都是從沒(méi)有到有的過(guò)程,但是我只是想去解惑它的實(shí)現(xiàn),因?yàn)樗揪褪呛枚硕说恼秊槌汕先f(wàn)的程序員們服務(wù)。
還是從我們熟悉的printf說(shuō)起:
如果你是個(gè)C語(yǔ)言的程序員,無(wú)論你是初學(xué)者還是高高手,對(duì)于printf都不會(huì)陌生,甚至你已經(jīng)用了無(wú)數(shù)次了。我已經(jīng)說(shuō)過(guò)我是個(gè)有極大惰性的人,所以每次用printf都是照本宣科,規(guī)規(guī)矩矩的按教科書(shū)上說(shuō)的做,從來(lái)沒(méi)有問(wèn)過(guò)一個(gè)為什么,這就是所謂的“熟視無(wú)睹”吧。
其實(shí),printf函數(shù)是一個(gè)典型的參數(shù)可變的函數(shù)。在保證它的第一個(gè)參數(shù)是字符串的條件下,你可以輸任意數(shù)量任意合法類(lèi)型的參數(shù)。只要你在第一個(gè)字符串參數(shù)中使用了對(duì)應(yīng)的格式化字符串,你就可以輸出正確的值。這難道不是件很有趣的事嗎?那它是怎么做到的?
1,首先,怎么得到參數(shù)的值。對(duì)于一般的函數(shù),我們可以通過(guò)參數(shù)對(duì)應(yīng)在參數(shù)列表里的標(biāo)識(shí)符來(lái)得到。但是參數(shù)可變函數(shù)那些可變的參數(shù)是沒(méi)有參數(shù)標(biāo)識(shí)符的,它只有“…”,所以通過(guò)標(biāo)識(shí)符來(lái)得到是不可能的,我們只有另辟途徑。/ 20
我們知道函數(shù)調(diào)用時(shí)都會(huì)分配棧空間,而函數(shù)調(diào)用機(jī)制中的棧結(jié)構(gòu)如下圖所示:
|......|
------------------
| 參數(shù)2 |
------------------
| 參數(shù)1 |
------------------
| 返回地址 |
------------------
|調(diào)用函數(shù)運(yùn)行狀態(tài)|
------------------
可見(jiàn),參數(shù)是連續(xù)存儲(chǔ)在棧里面的,那么也就是說(shuō),我們只要得到可變參數(shù)的前一個(gè)參數(shù)的地址,就可以通過(guò)指針訪問(wèn)到那些可變參數(shù)。但是怎么樣得到可變參數(shù)的前一個(gè)參數(shù)的地址呢?不知道你注意到?jīng)]有,參數(shù)可變函數(shù)在可變參數(shù)之前必有一個(gè)參數(shù)是固定的,并使用標(biāo)識(shí)符,而且通常被聲明為char*類(lèi)型,printf函數(shù)也不例外。這樣的話,我們就可以通過(guò)這個(gè)參數(shù)對(duì)應(yīng)的標(biāo)識(shí)符來(lái)得到地址,從而訪問(wèn)其他參數(shù)變得可能。我們可以寫(xiě)一個(gè)測(cè)試程序來(lái)試一下: / 20
#include
void va_test(char* fmt,...);//參數(shù)可變的函數(shù)聲明
void main(){
int a=1,c=55;
char b='b';
va_test(“",a,b,c);//用四個(gè)參數(shù)做測(cè)試
}
void va_test(char* fmt,...)//參數(shù)可變的函數(shù)定義,注意第一個(gè)參數(shù)為char* fmt {
char *p=NULL;/ 20
p=(char *)&fmt;//注意不是指向fmt,而是指向&fmt,并且強(qiáng)制轉(zhuǎn)化為char *,以便一個(gè)一個(gè)字節(jié)訪問(wèn)
for(int i = 0;i<16;i++)//16是通過(guò)計(jì)算的值(參數(shù)個(gè)數(shù)*4個(gè)字節(jié)),只是為了測(cè)試,暫且將就一下
{
printf(”%.4d “,*p);//輸出p指針指向地址的值
p++;} }
編譯運(yùn)行的結(jié)果為
0056 0000 0066 0000 | 0001 0000 0000 0000 | 0098 0000 0000 0000 | 0055 0000 0000 0000
由運(yùn)行結(jié)果可見(jiàn),通過(guò)這樣方式可以逐一獲得可變參數(shù)的值。
至于為什么通常被聲明為char*類(lèi)型,我們慢慢看來(lái)。
2,怎樣確定參數(shù)類(lèi)型和數(shù)量 / 20
通過(guò)上述的方式,我們首先解決了取得可變參數(shù)值的問(wèn)題,但是對(duì)于一個(gè)參數(shù),值很重要,其類(lèi)型同樣舉足輕重,而對(duì)于一個(gè)函數(shù)來(lái)講參數(shù)個(gè)數(shù)也非常重要,否則就會(huì)產(chǎn)生了一系列的麻煩來(lái)。通過(guò)訪問(wèn)存儲(chǔ)參數(shù)的棧空間,我們并不能得到關(guān)于類(lèi)型的任何信息和參數(shù)個(gè)數(shù)的任何信息。我想你應(yīng)該想到了——使用char *參數(shù)。Printf函數(shù)就是這樣實(shí)現(xiàn)的,它把后面的可變參數(shù)類(lèi)型都放到了char *指向的字符數(shù)組里,并通過(guò)%來(lái)標(biāo)識(shí)以便與其它的字符相區(qū)別,從而確定了參數(shù)類(lèi)型也確定了參數(shù)個(gè)數(shù)。其實(shí),用何種方式來(lái)到達(dá)這樣的效果取決于函數(shù)的實(shí)現(xiàn)。比如說(shuō),定義一個(gè)函數(shù),預(yù)知它的可變參數(shù)類(lèi)型都是int,那么固定參數(shù)完全可以用int類(lèi)型來(lái)替換char*類(lèi)型,因?yàn)橹灰玫絽?shù)個(gè)數(shù)就可以了。
3,言歸正傳
我想到了這里,大概的輪廓已經(jīng)呈現(xiàn)出來(lái)了。本來(lái)想就此作罷的(我的惰性使然),但是一想到如果不具實(shí)用性便可能是一堆廢物,枉費(fèi)我打了這么些字,決定還是繼續(xù)下去。
我是比較抵制用那些不明所以的宏定義的,所以在上面的闡述里一點(diǎn)都沒(méi)有涉及定義在
好了,我們來(lái)看一下那些宏定義。
打開(kāi)
1)typedef char * va_list;
2)#define _INTSIZEOF(n)((sizeof(n)+ sizeof(int)1))
3)#define va_start(ap,v)(ap =(va_list)&v + _INTSIZEOF(v))
4)#define va_arg(ap,t)(*(t *)((ap += _INTSIZEOF(t))sizeof(type)))
其中,argp的類(lèi)型是char *。
如果你想用va_arg從可變參數(shù)列表中提取出函數(shù)指針類(lèi)型的參數(shù),例如
int(*)(),則va_arg(argp, int(*)())被擴(kuò)展為:
(*(int(*)()*)(((argp)+= sizeof(int(*)()))-sizeof(int(*)())))
顯然,(int(*)()*)是無(wú)意義的。
解決這個(gè)問(wèn)題的辦法是將函數(shù)指針用typedef定義成一個(gè)獨(dú)立的數(shù)據(jù)類(lèi)型,例如:
typedef int(*funcptr)(); / 20
這時(shí)候再調(diào)用va_arg(argp, funcptr)將被擴(kuò)展為:
(*(funcptr *)(((argp)+= sizeof(funcptr))-sizeof(funcptr)))
這樣就可以通過(guò)編譯檢查了。
問(wèn)題:可變長(zhǎng)參數(shù)的獲取
有這樣一個(gè)具有可變長(zhǎng)參數(shù)的函數(shù),其中有下列代碼用來(lái)獲取類(lèi)型為float的實(shí)參:
va_arg(argp, float);
這樣做可以嗎?
答案與分析:
不可以。在可變長(zhǎng)參數(shù)中,應(yīng)用的是”加寬“原則。也就是float類(lèi)型被擴(kuò)展成double;char, short被擴(kuò)展成int。因此,如果你要去可變長(zhǎng)參數(shù)列表中原來(lái)為float類(lèi)型的參數(shù),需要用va_arg(argp, double)。對(duì)char和short類(lèi)型的則用va_arg(argp, int)。
問(wèn)題:定義可變長(zhǎng)參數(shù)的一個(gè)限制
為什么我的編譯器不允許我定義如下的函數(shù),也就是可變長(zhǎng)參數(shù),但是沒(méi)有任何的固定參數(shù)?
int f(...)
{ / 20
...}
答案與分析:
不可以。這是ANSI C 所要求的,你至少得定義一個(gè)固定參數(shù)。
這個(gè)參數(shù)將被傳遞給va_start(),然后用va_arg()和va_end()來(lái)確定所有實(shí)際調(diào)用時(shí)可變長(zhǎng)參數(shù)的類(lèi)型和值。
第一篇
C語(yǔ)言編程中有時(shí)會(huì)遇到一些參數(shù)個(gè)數(shù)可變的函數(shù),例如printf()函數(shù),其函數(shù)原型為:
int printf(const char* format,...);
它除了有一個(gè)參數(shù)format固定以外,后面跟的參數(shù)的個(gè)數(shù)和類(lèi)型是可變的(用三個(gè)點(diǎn)“…”做參數(shù)占位符),實(shí)際調(diào)用時(shí)可以有以下的形式:
printf(”%d“,i);printf(”%s“,s);printf(”the number is %d ,string is:%s“, i, s);
一個(gè)簡(jiǎn)單的可變參數(shù)的C函數(shù)
先看例子程序。該函數(shù)至少有一個(gè)整數(shù)參數(shù),其后占位符…,表示后面參數(shù)的個(gè)數(shù)不定。在這個(gè)例子里,所有的輸入?yún)?shù)必須都是整/ 20 數(shù),函數(shù)的功能只是打印所有參數(shù)的值。函數(shù)代碼如下:
//示例代碼1:可變參數(shù)函數(shù)的使用 #include ”stdio.h“ #include ”stdarg.h“ void simple_va_fun(int start,...){ va_list arg_ptr;int nArgValue =start;int nArgCout=”0“;//可變參數(shù)的數(shù)目
va_start(arg_ptr,start);//以固定參數(shù)的地址為起點(diǎn)確定變參的內(nèi)存起始地址。do { ++nArgCout;printf(”the %d th arg: %d",nArgCout,nArgValue);//輸出各參數(shù)的值
nArgValue = va_arg(arg_ptr,int);//得到下一個(gè)可變參數(shù)的值
} while(nArgValue!=-1);return;} int main(int argc, char* argv[]){ simple_va_fun(100,-1);simple_va_fun(100,200,-1);return 0;}
下面解釋一下這些代碼。從這個(gè)函數(shù)的實(shí)現(xiàn)可以看到,我們使用可變參數(shù)應(yīng)該有以下步驟: / 20
⑴由于在程序中將用到以下這些宏: 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 / 20
第二篇:C語(yǔ)言中的輸入輸出函數(shù)總結(jié)
putchar():把變量中的一個(gè)字符常量輸出到顯示器屏幕上;getchar();從鍵盤(pán)上輸入一個(gè)字符常量,此常量就是該函數(shù)的值;printf();把鍵盤(pán)中的各類(lèi)數(shù)據(jù),加以格式控制輸出到顯示器屏幕上;scanf();從鍵盤(pán)上輸入各類(lèi)數(shù)據(jù),并存放到程序變量中;puts():把數(shù)組變量中的一個(gè)字符串常量輸出到顯示器屏幕上;gets():從鍵盤(pán)上輸入一個(gè)字符串常量并放到程序的數(shù)組中.sscanf();從一個(gè)字符串中提取各類(lèi)數(shù)據(jù)。putchar()輸出一個(gè)字符
getchar()輸入流中獲取一個(gè)字符 例如:
char c = getchar();putchar(c);格式化輸入輸出scanf()和printf()是最有用的,所以重點(diǎn)講一下。printf(): 一般形式: printf(“格式控制”.輸出列表);eg : printf(“a=%d,b=%f,c=%cn”,a,b,c);1;格式控制.格式控制是用雙引號(hào)括起來(lái)的字符串,也稱(chēng)“轉(zhuǎn)換控制字符串”,它包含以下兩部分信息.格式說(shuō)明:由“%”和格式字符組成,如%d,%f,%c,他的作用是把輸出數(shù)據(jù)轉(zhuǎn)換為指定格式輸出,格式的說(shuō)明總是由“%”字符開(kāi)始的.普通字符:需要原樣輸出的字符,或者是一些有特殊含義的字符,如n,t。2;輸出列表
就是需要輸出的一些數(shù)據(jù),也可以是表達(dá)式,如果在函數(shù)中需要輸出多個(gè)變量或表達(dá)式,則要用逗號(hào)隔開(kāi).一些特殊字符的輸出:
單引號(hào),雙引號(hào),和反斜杠的輸出在前面加轉(zhuǎn)義字符”” 如:”’” , “”” , “”
%的輸出用兩個(gè)連在一起的%%,即printf(“%%”);
常用的格式說(shuō)明如下: 格式字符
d 以十進(jìn)制形式輸出帶符號(hào)整數(shù)(正數(shù)不輸出符號(hào))o 以八進(jìn)制形式輸出無(wú)符號(hào)整數(shù)(不輸出前綴O)x 以十六進(jìn)制形式輸出無(wú)符號(hào)整數(shù)(不輸出前綴OX)u 以十進(jìn)制形式輸出無(wú)符號(hào)整數(shù) f 以小數(shù)形式輸出單精度實(shí)數(shù) lf 以小數(shù)形式輸出雙精度實(shí)數(shù)
e 以指數(shù)形式輸出單、雙精度實(shí)數(shù)
g 以%f%e中較短的輸出寬度輸出單、雙精度實(shí)數(shù) c 輸出單個(gè)字符 s 輸出字符串
這里強(qiáng)調(diào)一下:網(wǎng)上很多文章都說(shuō)f 和lf是一樣的,即不管單精度,雙精度浮點(diǎn)數(shù),都可以用f, 但我在POJ上做過(guò)測(cè)試,輸出Double時(shí)用f確實(shí)也可以,但讀入時(shí),用f就報(bào)WA,所以大家如果對(duì)Double進(jìn)行讀寫(xiě)的話,都用lf吧。
說(shuō)到Double,再啰嗦一句,建議大家要用到浮點(diǎn)數(shù)時(shí)都用Double,不要用float,因?yàn)樵诤芏嗲闆r下,float精度不夠會(huì)導(dǎo)致WA。
特殊:
對(duì)64位整數(shù)的輸入輸出,在POJ上的C++環(huán)境下(即VC),64位整數(shù)是: __int64(注意int前面是兩個(gè)下劃線)輸入輸出格式為”%I64d”.在G++環(huán)境下(即Dev C++)64位整數(shù)是 long long 輸入輸出格式為”%lld”.輸出寬度
用十進(jìn)制整數(shù)來(lái)表示輸出的最少位數(shù)。注意若實(shí)際位數(shù)多于定義的寬度,則按實(shí)際位數(shù)輸出,若實(shí)際位數(shù)少于定義的寬度則補(bǔ)以空格或0。
精度
精度格式符以“.”開(kāi)頭,后跟十進(jìn)制整數(shù)。意義是:如果輸出數(shù)字,則表示小數(shù)的位數(shù);如果輸出的是字符,則表示輸出字符的個(gè)數(shù);若實(shí)際位數(shù)大于所定義的精度數(shù),則截去超過(guò)的部分。
標(biāo)志格式字符
-結(jié)果左對(duì)齊,右邊填空格
+ 輸出符號(hào)(正號(hào)或負(fù)號(hào))空格輸出值為正時(shí)冠以空格,為負(fù)時(shí)冠以負(fù)號(hào) 例如:
double c=24212345.24232;printf(“%020.4”);表示輸出精確到小數(shù)點(diǎn)后4位,輸出占20位,若有空余的位補(bǔ)0.scanf:
scanf的很多用法都是和printf對(duì)應(yīng)的,故不再贅述。
說(shuō)一下scanf一個(gè)特別好用的地方,就是可以濾去一些不想要的東西。舉例說(shuō)明如下:
比如輸入為日期 yyyy-mm-dd,就可以這樣寫(xiě): int year,moth,day;scanf(“%d-%d-%d”,&year,&moth,&day);再比如:
scanf(“%3d %*3d %2d”,&m,&n);輸入113 118 69回車(chē)(系統(tǒng)將113賦予m,將69賦予n,因?yàn)?號(hào)表示跳過(guò)它相應(yīng)的數(shù)據(jù)所以118不賦予任何變量)puts()用的不多,且基本都能用printf()代替,故不再多說(shuō)。gets()是從輸入流中獲取一行字符串放入字符數(shù)組中: char in[100];gets(in);大家可能最容易出錯(cuò)的地方就是字符串的輸入,所以強(qiáng)調(diào)一下: 能進(jìn)行字符,字符串輸入的有:
getchar(), scanf(“%c”);scanf(“%s”), gets()
其中g(shù)etchar()和 scanf(“%c”)的功能是一樣的。
需要注意的是,這兩個(gè)函數(shù)讀入的是輸入流中當(dāng)前位置的字符,比如:
scanf(“%d”,&n);c = getchar();假設(shè)輸入 67/(假設(shè)“/”代表回車(chē)),則第一個(gè)scanf讀入一個(gè)整數(shù)67后,當(dāng)前輸入流的位置是67之后,即指向回車(chē)符,所以第二個(gè)getchar()讀入的就是一個(gè)回車(chē)符了,即 c = ‘n’。
同樣,gets()也是從當(dāng)前位置讀入一行字符串。比如:
scanf(“%d”,&n);gets(str);此時(shí)讀入字符數(shù)組中的字符串就是“n” 了
所以通常在用scanf讀入一個(gè)非字符串的類(lèi)型之后,如果要讀入字符,或字符數(shù)組,都用一個(gè)額外的getchar()把回車(chē)符讀掉,若后面跟的不止一個(gè)回車(chē)符,可能還有多余的空格的話,就用gets()讀掉。
和以上不同的是,scanf(“%s”)讀入的時(shí)候是會(huì)忽略掉空格,回車(chē)和制表符的。并且以空格,回車(chē)和制表符作為字符串結(jié)束的標(biāo)志。
經(jīng)常會(huì)有這樣的題,輸入第一行是一個(gè)整數(shù),接下來(lái)每行的第一個(gè)是一個(gè)字符,用來(lái)表示某種操作,后面再跟一些數(shù)據(jù),比如: 4 A 100 2 B 23 A 23 89 B 34
像這種輸入就需要小心,讀入字符時(shí)不要讀成回車(chē)符。為了防止意外,我一般是這樣處理這類(lèi)輸入的: char model[2];Scanf(“%d”,&n);for(?,?,?){
scanf(“%s”,model);
if(model[0] == ‘A’){ } else{ } } sscanf(): sscanf()經(jīng)常用來(lái)分解字符串,功能非常強(qiáng)大,但很多功能都需要正則表達(dá)式的知識(shí),所以就介紹一下最簡(jiǎn)單的幾種用法,大家如果想了解更多的話,自己去網(wǎng)上找吧。1.char str[100],str1[100],str2[100];gets(str);sscanf(str,”%s%s”,str1,str2);
將讀入的一整行字符串按空格,制表符或回車(chē)符分割成兩個(gè)字符串。2 取指定長(zhǎng)度的字符串。如在下例中,取最大長(zhǎng)度為4字節(jié)的字符串。
sscanf(“123456 ”, “%4s”, str);
對(duì)于C++的輸入輸出就不再詳細(xì)的講了,因?yàn)閏in,cout的速度實(shí)在太慢,不推薦使用,我一般都是到萬(wàn)不得已時(shí)才用。
比如當(dāng)你要讀入字符串到string 對(duì)象中時(shí),就只能用cin了,這時(shí)候還有一個(gè)常見(jiàn)的問(wèn)題,就是如何將一整行字符串讀入一個(gè)string 中,這就要用到getline函數(shù)了。用法為: getline(cin, str);第一個(gè)參數(shù)就是標(biāo)準(zhǔn)輸入流cin,第二個(gè)參數(shù)是接收讀入數(shù)據(jù)的string對(duì)象,本來(lái)還有第三個(gè)參數(shù),是結(jié)束符的標(biāo)志,但通常用它默認(rèn)的就可以了,所以不用管。
注意區(qū)分這個(gè)getline和cin.getline的區(qū)別: cin.getline的用法如下: char str[20];cin.getline(str,20);表示從讀入的一行字符串中,取最多20各字符放入字符數(shù)組str中,注意此處的str是字符數(shù)組,而上面的str是string對(duì)象。
另外需要注意的是,千萬(wàn)不要把cout和printf混用,因?yàn)閏out是帶緩沖的而printf不帶,所以會(huì)使得輸出的數(shù)據(jù)順序混亂。
第三篇:對(duì)于C語(yǔ)言中的scanf函數(shù)的使用問(wèn)題總結(jié)
Scanf函數(shù)總結(jié)
對(duì)于C語(yǔ)言中的scanf函數(shù)的小結(jié)
對(duì)于scanf函數(shù)的作用大家應(yīng)該都知道吧。在任何一本C語(yǔ)言的教材中都有過(guò)介紹,它的一般形式是(格式控制,地址表列)
我今天想說(shuō)說(shuō)使用這個(gè)scanf函數(shù)的時(shí)候,應(yīng)該注意哪些問(wèn)題吧。
1.scanf函數(shù)中的格式控制應(yīng)該是變量名的地址,而不是變量名,例如a和b為整形變量,如果寫(xiě)成scanf(“%d%d”,a,b);就會(huì)出錯(cuò)的,應(yīng)該將這個(gè),a,b改成&a,&b;(表示地址)2我們都知道C語(yǔ)言中的字符串是存放到字符數(shù)組中的,如果我們定義了一個(gè)字符數(shù)組,如char a[20];我們想把字符串輸入到這個(gè)字符數(shù)組中通常有兩種方式,第一種.逐個(gè)字符輸入,采用for循環(huán)的形式。第二種,直接輸入字符串的形式,用格式控制符%s.第一種我們這樣輸入,for(i=0;i<=19;i++){ } 第二種我們用這種方式輸入 Scanf(“%s”,a);注意第二種這種形式,我們沒(méi)有加&,這是為什么呢,這是 Scanf(“%c”,&a[i]);
Scanf函數(shù)總結(jié)
因?yàn)?,C語(yǔ)言中把這個(gè)數(shù)組名當(dāng)做該數(shù)組的起始地址。但是這種數(shù)組僅限于字符數(shù)組,不要企圖,利用數(shù)值型數(shù)組的名。來(lái)整體輸入,一個(gè)數(shù)值型的數(shù)組,這就是大錯(cuò)誤了,比如這樣寫(xiě)是不正確的 Int a[10];Scanf(“%d”,a);數(shù)值型數(shù)組的輸入只能采用上面的第一種方法。3對(duì)于指針問(wèn)題,大家需要注意一點(diǎn),指針就是地址,這是在任何條件下都成立的,(請(qǐng)?jiān)试S我極端一點(diǎn)),比方看下面的例子。Char *p;Char a[20];P=a;For(i=0;i<20;i++,p++){ } 這是一個(gè)采用指針變量輸入數(shù)據(jù)的例子,這里的指針變量p在for循環(huán)之前就指向了這個(gè)數(shù)組a,也就是指向了數(shù)組的首元素,也就是是說(shuō)指針變量p里存放的是,數(shù)組首元素的地址,所以在用這個(gè)scanf函數(shù)進(jìn)行輸出時(shí),指針變量的前方就不用再加取地址符號(hào)了。Scanf(“%c”,p);
Scanf函數(shù)總結(jié)
4.這個(gè)問(wèn)題是整個(gè)scanf函數(shù)使用過(guò)程中最容易出錯(cuò)的一個(gè)地方。就是關(guān)于用scanf函數(shù)在用“%c”格式聲明輸入字符的時(shí)候,是最容易出錯(cuò)的一個(gè)地方。一點(diǎn)一點(diǎn)進(jìn)行,下面請(qǐng)看一個(gè)簡(jiǎn)單的例子: 看下面的一個(gè)程序,(1)
#include
} 我們想要輸入三個(gè)整數(shù),輸入的時(shí)候我們要注意了,這里的scanf函數(shù)中的格式控制是三個(gè)連續(xù)的%d,除了格式聲明以外中間沒(méi)有任何其他的字符,這個(gè)時(shí)候我們輸入數(shù)據(jù)應(yīng)該加入空格,否則執(zhí)行不了。1 2 3(1,2之間有空格,2,3之間有空格,(具體原因會(huì)在例題2中闡明)加入其他符號(hào)也是不可以的)
(2)經(jīng)過(guò)第一道的例題,似乎讓我明白了這樣的一個(gè)規(guī)律,如果中間都是除了格式聲明以外中間沒(méi)有任何其他的字符,int a,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%d%d%dn”,a,b,c);return 0;
Scanf函數(shù)總結(jié)
那我就可以用空格,來(lái)隔開(kāi)我的數(shù)據(jù)了??纯聪旅娴睦} #include
} 我的輸入還是仿照上面,進(jìn)行截圖如下所示 char a,b,c;scanf(“%c%c%c”,&a,&b,&c);printf(“%c%c%cn”,a,b,c);return 0;
我們發(fā)現(xiàn)輸出并不是我們想象的那樣,而是出現(xiàn)了錯(cuò)誤,下面我們來(lái)解釋一下原因,因?yàn)槲覀冊(cè)瓉?lái)輸入的位數(shù)值型的數(shù)據(jù),所以我們要區(qū)分?jǐn)?shù)值的個(gè)數(shù),以及位數(shù),比方我想輸入
Scanf函數(shù)總結(jié) 234 456這三個(gè)數(shù),我要是連續(xù)的把這8個(gè)數(shù)輸入進(jìn)去,計(jì)算機(jī)也無(wú)法區(qū)分,這到底是幾個(gè)數(shù),所以我們用空格加以區(qū)分,這樣計(jì)算機(jī)遇到空格就知道這個(gè)數(shù)值型的數(shù)已經(jīng)輸入完畢了(這是例題1中我們?yōu)槭裁醇涌崭竦脑颍?,但是為什么在例題2中我還是這樣做,就不可以了呢,這是因?yàn)槲覀儸F(xiàn)在輸入的是字符型數(shù)據(jù),而且字符型數(shù)據(jù)不是像數(shù)值型數(shù)據(jù)那樣,有幾位數(shù)字,字符型的數(shù)據(jù)只有一位,所以你輸入一位數(shù)據(jù)他就給一個(gè)變量,所以不需要像數(shù)值型的數(shù)據(jù)那樣隔開(kāi)了,所以我們直接輸入三個(gè)連續(xù)的字母asd就可以了,就不用空格分開(kāi)了,如果我們輸入a空格s空格d,那么他就會(huì)默認(rèn)的把前三個(gè)字符送給三個(gè)變量了,也就是a空格s(因?yàn)榭崭褚彩且粋€(gè)字符)。(3)下面大家看一下這道例題。
//下面程序很簡(jiǎn)單,就是輸入兩個(gè)數(shù)和一個(gè)運(yùn)算符號(hào),#include“stdio.h” void main(){
int;float z,x,y;char cc;printf(“please enter date:n”);scanf(“%f%c%f”,&x,&cc,&y);
Scanf函數(shù)總結(jié)
} if(cc=='+')z=x+y;if(cc=='-')z=x-y;if(cc=='*')z=x*y;if(cc=='/')z=x/y;printf(“%fn”,z);我們連續(xù)輸入三個(gè)1+2 結(jié)果輸出3,截圖如下
這里要注意的是,輸入1之后不能有空格,因?yàn)橄旅媸且粋€(gè)字符型數(shù)據(jù),輸入字符型數(shù)據(jù)之后,就可以有空格了,因?yàn)?/p>
Scanf函數(shù)總結(jié)
后面是一個(gè)數(shù)值型數(shù)據(jù)。(所以按照這種方式輸入也可以 1+ 2)(4),如果在“格式控制字符串中”除了格式聲明還有其它字符,則在輸入數(shù)據(jù)的時(shí)候,在對(duì)應(yīng)的位置上應(yīng)該輸入與這些字符相同的字符。#include
} 我們?cè)谳斎霐?shù)據(jù)的時(shí)候應(yīng)該這樣輸入,1,2,3 我要講的內(nèi)容就要講完了,下面和大家說(shuō)說(shuō)在輸入這個(gè)數(shù)據(jù)的時(shí)候,盡量加入,分隔,scanf(“%d,%d,%d”,&a,&b,&c);這樣不容易出錯(cuò),如果什么符號(hào)也不用直接這樣的話scanf(“%d%d%d”,&a,&b,&c);大家一定要注意我上面說(shuō)的三個(gè)例子。int a,b,c;scanf(“%d,%d,%d”,&a,&b,&c);printf(“%d%d%dn”,a,b,c);return 0;7
第四篇:淺析英語(yǔ)語(yǔ)言中的性別歧視
淺析英語(yǔ)語(yǔ)言中的性別歧視
摘要:性別歧視是現(xiàn)代社會(huì)一個(gè)被廣泛關(guān)注的問(wèn)題。語(yǔ)言性別歧視也是性別歧視中很重要的一部分,并且語(yǔ)言歧視也得到了很多社會(huì)語(yǔ)言學(xué)家的重視與關(guān)注。語(yǔ)言是一面能夠反映社會(huì)文化與人們心理活動(dòng)的鏡子。因此從社會(huì)語(yǔ)言學(xué)角度去分析英語(yǔ)語(yǔ)言中的性別歧視以及其成因是很有必要的。
關(guān)鍵詞:社會(huì)語(yǔ)言學(xué);性別歧視;英語(yǔ)語(yǔ)言
Abstract: Sexism is an important issue in the whole society.Sexism language is a part of sexism which has attracted social linguiticians and psychologists’ attention.Language is a mirror of society which reflects people’s thought and culture.It is meaningful to study the phenomenon and reasons of sexist language from the perspective of social linguistics.Key words: social linguistics;sexism;English language 引言
語(yǔ)言一直以來(lái)都是社會(huì)的一面鏡子,反映著社會(huì)中人們的思想以及社會(huì)基本的價(jià)值觀。在二十世紀(jì)早期,性別不同而導(dǎo)致的語(yǔ)言差異開(kāi)始引起學(xué)者的關(guān)注。但是語(yǔ)言性別歧視卻直到二十世紀(jì)六十年代才開(kāi)始被研究。語(yǔ)言性別歧視是指從形式、意義以及語(yǔ)言的其他方面對(duì)于女性的歧視。語(yǔ)言是社會(huì)的產(chǎn)物,反應(yīng)了特定時(shí)期社會(huì)的文化、習(xí)俗以及思想模式。因此,語(yǔ)言性別歧視也同樣反應(yīng)了整個(gè)社會(huì)的對(duì)于女性的歧視的價(jià)值觀。社會(huì)中男女不平等現(xiàn)象也反應(yīng)了社會(huì)的發(fā)展進(jìn)程與發(fā)展中出現(xiàn)的問(wèn)題。因此,語(yǔ)言性別歧視的研究對(duì)于社會(huì)的發(fā)展以及社會(huì)整體價(jià)值觀的形成有著很關(guān)鍵的意義。
著名語(yǔ)言學(xué)家羅賓·萊考夫在語(yǔ)言特征以及使用方面有所研究,并且她指出女性語(yǔ)言包括描述女性的語(yǔ)言以及女性使用的語(yǔ)言,這些語(yǔ)言在功能上就反應(yīng)了對(duì)于女性身份的歧視。1922年,丹麥語(yǔ)言學(xué)家?jiàn)W托·葉斯帕森從詞匯以及句法方面來(lái)描述了語(yǔ)言上的性別不同。二十世紀(jì)六十年代末期,許多學(xué)者開(kāi)始嘗試從社會(huì)語(yǔ)言學(xué)角度分析女性語(yǔ)言。十年后,許多大學(xué)也開(kāi)設(shè)了性別語(yǔ)言與行為課程。許多著名學(xué)者在二十世紀(jì)80年代將語(yǔ)言性別歧視進(jìn)行了更深層次的研究。語(yǔ)言性別歧視已經(jīng)成為了學(xué)者們廣泛研究的課題之一。
一、語(yǔ)言性別歧視的表現(xiàn)以及成因 1.語(yǔ)言性別歧視的表現(xiàn)
語(yǔ)言性別歧視首先體現(xiàn)在詞語(yǔ)的形成以及使用方面。男性和女性是生來(lái)平等的,并且彼此都需要互相尊重。在英語(yǔ)中,詞語(yǔ)的使用方面分為男性詞語(yǔ)和女性詞語(yǔ)。一些詞語(yǔ)只能用來(lái)形容男性而不能用于形容女性。并且一些只用于形容女性的詞語(yǔ)是對(duì)女性有歧視的。從詞語(yǔ)的形成上來(lái)說(shuō),英語(yǔ)中的許多既可以描述女性又可以男性的詞匯都是以男性詞匯作為詞根的。相反的,只能描繪女性的詞語(yǔ)都是從男性詞語(yǔ)中變化來(lái)的。比如prince-princess,host-hostess,hero-heroine等。還有一種詞語(yǔ),描述女性的詞語(yǔ)是專(zhuān)門(mén)被標(biāo)記出的,而男性詞語(yǔ)卻沒(méi)有任何標(biāo)記。例如,ambassador可以同時(shí)表示男性大使和女性大使,但是ambassadress卻只能用來(lái)描述女性大使。同樣的例子還有poet和poetess。這些現(xiàn)象都可以體現(xiàn)出人們將男性語(yǔ)言作為標(biāo)準(zhǔn)和社會(huì)的主體語(yǔ)言,而女性詞匯則是男性詞匯的從屬或者演變。
在英語(yǔ)中,當(dāng)我們不確定性別或不必要確定性別的時(shí)候,我們通常都用he來(lái)指代任何人。并且man這個(gè)詞也可以代表某一類(lèi)特定的人,比如mankind,human,spokesman,congressman等。這個(gè)現(xiàn)象也體現(xiàn)了男性在社會(huì)中的主導(dǎo)地位。同樣,很多描繪女性的詞語(yǔ)可以反映出女性在家庭和社會(huì)中的地位。例如,housewife和earth-mother這兩個(gè)詞就可以表現(xiàn)出女性的生活是以洗衣做飯等家務(wù)為中心的。Secretary,nurse,stenographer這些詞語(yǔ)可以體現(xiàn)出女性擁有自己的職業(yè)但是收入水平非常低,如果有男性從事護(hù)士或秘書(shū)職業(yè),我們一定會(huì)特意標(biāo)記出male nurse和male secretary。人們通常會(huì)把高收入職業(yè)同男性聯(lián)系在一起,例如醫(yī)生、律師等。但是如果女性從事這種行業(yè),人們就會(huì)特意標(biāo)記處woman doctor和woman doctor。這些詞語(yǔ)的分類(lèi)就體現(xiàn)出人們意識(shí)里認(rèn)為男性就應(yīng)該從事高收入以及挑戰(zhàn)性的工作,而女性只能從事低收入以及社會(huì)地位較低的工作。
在詞語(yǔ)的順序方面也能體現(xiàn)出語(yǔ)言性別歧視。在英語(yǔ)中,當(dāng)我們需要同時(shí)提到男性和女性時(shí),我們通常會(huì)說(shuō)“l(fā)adies and gentlemen”,“bride and groom”,西方人認(rèn)為“女士?jī)?yōu)先”是他們的理解。但是在這種情況下,人們認(rèn)為女性是弱勢(shì)的性別,是需要被照顧的。大多數(shù)的情況,人們更習(xí)慣把男性詞語(yǔ)放在女性詞語(yǔ)之前,來(lái)表現(xiàn)女性的從屬地位,例如man and woman, male and female, husband and wife, Adam and Eve等。這種語(yǔ)言習(xí)慣也體現(xiàn)出了社會(huì)在語(yǔ)言方面對(duì)于女性的歧視。
從社會(huì)語(yǔ)言學(xué)的角度看,語(yǔ)言是作為一種表達(dá)思想的工具,并且是隨著人類(lèi)社會(huì)的發(fā)展而發(fā)展的。從語(yǔ)義學(xué)的研究角度看,有很多詞語(yǔ)是贊揚(yáng)男性卻貶低女性的。男性詞語(yǔ)通常是褒義詞而女性詞語(yǔ)通常是貶義詞。例如,wench這個(gè)詞語(yǔ)最早是用來(lái)形容鄉(xiāng)村姑娘,但是現(xiàn)在卻用來(lái)形容妓女。根據(jù)統(tǒng)計(jì),英語(yǔ)中有超過(guò)500個(gè)詞可以表示妓女,但是只有65個(gè)詞可以用來(lái)表示男妓。
這種類(lèi)型的歧視還有很多。例如bachelor和spinster都可以形容未婚者,但是bachelor用來(lái)形容男性未婚者,未婚的原因是因?yàn)槟行院塥?dú)立并且享受單身狀態(tài)。但是spinster用來(lái)形容很難找到結(jié)婚對(duì)象的女性未婚者。我們可以發(fā)現(xiàn)這些詞語(yǔ)都反映了男性和女性社會(huì)地位的不同。
2.語(yǔ)言性別歧視的成因
語(yǔ)言是文化的一部分并且能夠反映社會(huì)整體文化。語(yǔ)言是被文化影響的,但是同時(shí)他也反映了文化中的民族特征。語(yǔ)言也可以表現(xiàn)出人們的思想,生活方式以及思維模式。所以語(yǔ)言中的性別歧視也體現(xiàn)了社會(huì)中的男性女性不平等的現(xiàn)象。這種現(xiàn)象是由特定的社會(huì)價(jià)值觀和思維模式?jīng)Q定的。語(yǔ)言是沒(méi)有感情色彩的,但是語(yǔ)言使用者會(huì)根據(jù)他們的價(jià)值觀以及觀點(diǎn)去給語(yǔ)言加上顏色。語(yǔ)言中的性別歧視不是一天就形成的。
社會(huì)環(huán)境是影響語(yǔ)言性別歧視形成的因素之一。語(yǔ)言是社會(huì)團(tuán)體在環(huán)境中習(xí)得的。性別歧視語(yǔ)言進(jìn)入惡性循環(huán)是由于西方社會(huì)傳統(tǒng)思想觀念造成的,對(duì)于女性的歧視似乎已經(jīng)變成了文化的一部分。西方社會(huì)對(duì)女性的能力、價(jià)值觀和行為都是有偏見(jiàn)的,而這種偏見(jiàn)就形成了固定的價(jià)值觀和文化模式。這種性別歧視的社會(huì)成見(jiàn)是不公平的,他反映了社會(huì)的穩(wěn)定發(fā)展是建立在犧牲女性利益的基礎(chǔ)上的。這就意味著女性在政治、社會(huì)、教育以及經(jīng)濟(jì)方面都是不平等的。
從歷史的發(fā)展方面看,在西方社會(huì),女性的社會(huì)地位是低于男性的。在語(yǔ)言的發(fā)展過(guò)程中,女性語(yǔ)言被認(rèn)為應(yīng)該是禮貌、保守、服從以及溫柔的。而相反的,男性語(yǔ)言就更直接、勇敢和堅(jiān)持。在西方,宗教也是影響語(yǔ)言的重大因素。在圣經(jīng)中,女性就屬于從屬地位。上帝首先創(chuàng)造了男性亞當(dāng),而當(dāng)亞當(dāng)需要幫助的時(shí)候,上帝才創(chuàng)造了女性夏娃,夏娃也是由亞當(dāng)?shù)囊桓吖莿?chuàng)造的。這也就意為著,女性是從男性從產(chǎn)生出來(lái)的。因此語(yǔ)言也把男性語(yǔ)言放在了首位。
二、避免性別歧視語(yǔ)言的措施
性別歧視語(yǔ)言在污染著我們的語(yǔ)言環(huán)境并且影響了我們的交流,甚至?xí)?dǎo)致矛盾和沖突。所以在一些正式場(chǎng)合需要規(guī)避性別歧視語(yǔ)言,使人與人之間的交流更加的有效。如果我們都在避免使用性別歧視語(yǔ)言,人們之間交流會(huì)更有效,表達(dá)會(huì)更清楚,語(yǔ)言也會(huì)變得更優(yōu)美。更重要的是,避免使用性別歧視語(yǔ)言可以促使社會(huì)中的性別平等。西方國(guó)家在避免使用性別歧視語(yǔ)言方面給予了高度的關(guān)注。
當(dāng)沒(méi)有必要指明性別的時(shí)候,我們應(yīng)該避免使用性別形容詞,例如lady doctor, female lawyer等。性別形容詞會(huì)暗示人們這樣的工作職能由男性或女性來(lái)?yè)?dān)任。這也是一種性別歧視。我們也應(yīng)該避免使用Mrs.和Miss,而使用Ms,當(dāng)我們不知道一位女性的婚姻狀況時(shí),我們最好使用Ms。在正式場(chǎng)合我們也應(yīng)避免使用性別歧視語(yǔ)言,可以使用一些委婉語(yǔ)來(lái)表達(dá)一些可能會(huì)貶低女性的詞語(yǔ),這樣可以避免交流中的尷尬。
英語(yǔ)中的一些以男性詞語(yǔ)為詞綴的復(fù)合詞是用來(lái)表示職業(yè)的,我們可以使用一些中性詞來(lái)避免在職業(yè)稱(chēng)謂方面的性別歧視語(yǔ)言,例如“消防員”,我們可以用firefighter而不是fireman。同樣的例子還有news reporter和 newsman,police officer 和 policeman。
三、結(jié)論
性別歧視語(yǔ)言不論是在語(yǔ)言學(xué)還是在整個(gè)社會(huì)中都是一個(gè)重要的議題。這方面的研究吸引著越來(lái)越多的學(xué)者。跟男性相比,女性的社會(huì)地位是略低的。語(yǔ)言并不能影響女性的社會(huì)地位,因?yàn)樾詣e歧視是整個(gè)社會(huì)的問(wèn)題,他反映著歧視女性的思想已經(jīng)在人們心中根深蒂固,成為了歷史文化的一部分。我們只有從根源處消除人們對(duì)于女性歧視的這一思想,性別歧視語(yǔ)言現(xiàn)象才有可能被規(guī)避。人們應(yīng)該意識(shí)到,給及女性平等的社會(huì)地位,真正實(shí)現(xiàn)兩性平等才是最重要的。
參考文獻(xiàn): 白解紅著.性別語(yǔ)言文化與語(yǔ)用研究[M].長(zhǎng)沙:湖南教育出版社,2000 ,9122 3 楊永林著.社會(huì)語(yǔ)言學(xué)---功能性別稱(chēng)謂篇[M].上海:上海外語(yǔ)教育出版社,2004 ,201122 5 趙蓉暉著.語(yǔ)言與性別---口語(yǔ)的社會(huì)語(yǔ)言學(xué)研究[M].上海:上海外語(yǔ)教育出版社,2003 ,41-53
第五篇:淺談?dòng)⒄Z(yǔ)語(yǔ)言中的性別歧視
陳 賀
(宿州學(xué)院 外國(guó)語(yǔ)學(xué)院,安徽 宿州 234000)
摘 要:從英語(yǔ)語(yǔ)言出發(fā),分析其中的性別歧視現(xiàn)象:視男性用語(yǔ)為主體,女性用語(yǔ)為變體或附屬;兩性詞語(yǔ)在詞義上不對(duì)稱(chēng);詞匯排序上遵循“男先女后”的原則。接著從勞動(dòng)性別分工、宗教思想、性別角色社會(huì)化三個(gè)角度對(duì)之進(jìn)行原因解讀。這為當(dāng)前的性別語(yǔ)言研究提供一定的參考和啟示。
關(guān)鍵詞:性別;勞動(dòng)分工;宗教;角色社會(huì)化
中圖分類(lèi)號(hào):H0-05 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1673-2596(2011)09-0209-03 性別歧視是以性別為基礎(chǔ)而產(chǎn)生的一種歧視現(xiàn)象,它可以表現(xiàn)為男性對(duì)女性的歧視,也可以表現(xiàn)為女性對(duì)男性的歧視。《朗曼英語(yǔ)詞典》定義性別歧視為:“以性別為基礎(chǔ)的歧視,尤其是男性對(duì)女性的偏見(jiàn)?!薄睹绹?guó)傳統(tǒng)詞典》關(guān)于“性別歧視”的解釋是:“一類(lèi)性別成員對(duì)另一類(lèi)性別成員,尤其是男性對(duì)女性的歧視?!币虼耍靶詣e歧視”通常是對(duì)女性的歧視,是社會(huì)對(duì)女性的偏見(jiàn)[1]1。語(yǔ)言是人們交流的重要工具,是人類(lèi)思想的重要載體,折射了社會(huì)的文化習(xí)俗與價(jià)值觀念。通過(guò)語(yǔ)言,可以管窺到人們的性別觀念。幾千年來(lái),英語(yǔ)國(guó)家人們一直生活在父權(quán)制體系的桎梏之下,對(duì)女性懷有深深的歧視。這一性別態(tài)度,在英語(yǔ)語(yǔ)言中有著深刻的印證。那么,本文將揭示英語(yǔ)語(yǔ)言中的性別歧視現(xiàn)象,并對(duì)之進(jìn)行原因探討。
一、英語(yǔ)語(yǔ)言中的性別歧視
(一)以男性為規(guī)范
以男性為規(guī)范是語(yǔ)言性別歧視的重要表現(xiàn)之一[1]1。表現(xiàn)在具體語(yǔ)言事實(shí)上,即語(yǔ)言視男性用語(yǔ)為主體,將女性用語(yǔ)當(dāng)作變體或附屬[2]。這一特征在英語(yǔ)語(yǔ)言中具有鮮明的體現(xiàn)。
(二)詞義上的不對(duì)稱(chēng)
其次,與男性相比,英語(yǔ)中與女性相關(guān)的貶義詞數(shù)量眾多。據(jù)Dale Spencer統(tǒng)計(jì),英語(yǔ)中表達(dá)“性生活放蕩”的詞語(yǔ),至少有220個(gè)是與女性相關(guān),而只有20個(gè)左右與男性有關(guān)。另?yè)?jù)研究,英語(yǔ)中表示“在性生活上亂七八糟的女子”的詞多達(dá)320個(gè),幾乎所有關(guān)于女性的詞都有具有貶義,而一部分關(guān)于男性的詞則含有“哪個(gè)男子不風(fēng)流的”容忍之意。
再次,男女詞義演變上不對(duì)稱(chēng)。在長(zhǎng)期的語(yǔ)言交際過(guò)程中,男性詞語(yǔ)向褒義方向演變,而女性詞語(yǔ)則有惡化的趨勢(shì)。King(國(guó)王)、lord(老爺)、master(主人)、father(父親),在現(xiàn)代英語(yǔ)中,只要把他們的首字母大寫(xiě),就可以分別用來(lái)指“上帝”、“基督”、“主或神”。與男性褒化相對(duì),女性詞語(yǔ)往往增加了貶義。Tart一詞原指一種小糕餅,后用作親昵的稱(chēng)呼年輕女子,后來(lái)演變?yōu)椤案挥谛愿械呐印保S后又轉(zhuǎn)化為“對(duì)道德不甚介意,作風(fēng)隨便的女子”,而現(xiàn)在又指“在街上拉客的女子”。
(三)語(yǔ)序上的歧視
二、英語(yǔ)中性別歧視產(chǎn)生的原因
語(yǔ)言依賴于社會(huì),是人類(lèi)社會(huì)的產(chǎn)物。不同的社會(huì)形態(tài),會(huì)產(chǎn)生不同的語(yǔ)言體系。語(yǔ)言的形成與一定的社會(huì)文化、風(fēng)俗習(xí)慣、價(jià)值觀念等,有著密切的關(guān)系。因此,英語(yǔ)語(yǔ)言中的性別歧視現(xiàn)象,與英美國(guó)家男女不平等的社會(huì)現(xiàn)實(shí)不無(wú)關(guān)聯(lián)。而這種不平等的社會(huì)現(xiàn)實(shí),與以下三個(gè)層面緊密相關(guān):
(一)勞動(dòng)性別分工
馬克思主義女性主義認(rèn)為男女不平等源自勞動(dòng)性別分工[3]67。勞動(dòng)性別分工是人類(lèi)最主要的社會(huì)分工形式,以生理性和社會(huì)性別為基礎(chǔ),社教化將男性和女性分別規(guī)范在以性別特質(zhì)界定的工作崗位[3]68。依照性別分配勞動(dòng)是人類(lèi)最早的勞動(dòng)分工方式,它是人類(lèi)尋找到的最有效的組織社會(huì)生活的方法[4]。在西方農(nóng)業(yè)社會(huì)里,勞動(dòng)性別分工模式主要與性別天然差異和當(dāng)時(shí)的生產(chǎn)力發(fā)展水平有關(guān):
首先,在某種程度來(lái)講,勞動(dòng)性別分工是自然秩序的結(jié)果[5]。根據(jù)達(dá)爾文理論,男性與女性具有一定的生理差異,兩性各有獨(dú)特的身體特征。總體而言,在體格方面,男性身材高大,肌肉發(fā)達(dá),身體健壯;女性則身材較小,身體比較纖弱。在性格方面,男性精力旺盛,富有冒險(xiǎn)精神;女性則比較文靜、溫柔、隨和。由于這些差異,男性似乎更加適合從事與生產(chǎn)有關(guān)的勞動(dòng),如養(yǎng)殖、農(nóng)耕等。而女性則適宜從事與人的再生產(chǎn)有關(guān)的勞動(dòng),如生育、撫育和家務(wù)勞動(dòng)等。
其次,勞動(dòng)性別分工形式與生產(chǎn)力的發(fā)展水平有直接的關(guān)系。在原始社會(huì),生產(chǎn)力水平低下,男性與女性必須一起勞動(dòng),才能維持生活:女性采摘水果和種子,男性狩獵打魚(yú)。由于當(dāng)時(shí)勞動(dòng)工具落后,采摘是人們主要的生活來(lái)源。于是,在一定時(shí)期內(nèi),人類(lèi)社會(huì)是母系氏族社會(huì)。當(dāng)人類(lèi)步入農(nóng)業(yè)社會(huì)后,生產(chǎn)力水平有了極大改善,社會(huì)的主要經(jīng)濟(jì)支柱轉(zhuǎn)為農(nóng)耕等體力勞動(dòng)。由于身體上的差異,男性身體更加強(qiáng)壯,更適合從事這些勞動(dòng)。于是,人類(lèi)社會(huì)逐漸形成了新的勞動(dòng)性別分工,男性主要從事農(nóng)業(yè)生產(chǎn)等,女性則局限在家庭范圍之內(nèi)。
因此,在西方農(nóng)業(yè)社會(huì)勞動(dòng)性別分工模式里,男性是社會(huì)生產(chǎn)的主體。在家庭和公共空間的劃分過(guò)程中,財(cái)產(chǎn)關(guān)系成為決定性別秩序的基本決定因素[6]。于是,長(zhǎng)期以來(lái),在經(jīng)濟(jì)上占主導(dǎo)地位的男性主宰著社會(huì)的一切,壟斷了政治、經(jīng)濟(jì)、法律等公共領(lǐng)域;女性則處于從屬地位,被禁錮在家庭范圍內(nèi)。這一社會(huì)特征反映在語(yǔ)言層面上,表現(xiàn)為語(yǔ)言中存在大量的歧視現(xiàn)象。
(二)宗教思想
基督教是西方文化的基石,在西方國(guó)家文明發(fā)展中起到舉足輕重的作用,對(duì)社會(huì)意識(shí)形態(tài)的形成具有至關(guān)重要的意義。但是,基督教教義以男性為主體,到處充斥著對(duì)女性的排斥和歧視。在這種宗教思想體系下,男性有著無(wú)與倫比的社會(huì)地位,他們是按照神權(quán)來(lái)進(jìn)行統(tǒng)治,按照神權(quán)來(lái)規(guī)范女性的一切[7]22。在《圣經(jīng)》中,上帝創(chuàng)造的第一個(gè)人類(lèi)是男性。上帝賦予他無(wú)限的權(quán)利,制造了世界萬(wàn)物,按照他的意愿命名,歸他統(tǒng)治。為了不讓他感到孤獨(dú),上帝又取其一根肋骨,創(chuàng)造了一個(gè)女性,來(lái)幫助他,陪伴他。于是,女性往往被看作是男性的附屬品。因此,在社會(huì)關(guān)系中,男性支配社會(huì)的方方面面,而女性只能處于從屬的地位:
你們作妻子的,當(dāng)服從自己的丈夫,如同順?lè)?。因?yàn)檎煞蚴瞧拮拥念^,如同基督是教會(huì)的頭,他又是教會(huì)全體的救主。教會(huì)怎樣順?lè)?,妻子也要怎樣凡事順?lè)煞?。(《以弗所?shū)》第五章)
而且,女性在《圣經(jīng)》中常被看作萬(wàn)惡之源。在伊甸園中,夏娃受到蛇的誘惑,偷吃了智慧樹(shù)上的蘋(píng)果,并引誘亞當(dāng)也偷吃了禁果。于是,他們被上帝驅(qū)趕出伊甸園,被罰永遠(yuǎn)生活在苦難之中。因此,人們認(rèn)為夏娃對(duì)人類(lèi)的墮落負(fù)有不可推卸的責(zé)任。同時(shí),在《圣經(jīng)》中,無(wú)論是《舊約》還是《新約》,女性常常被忽略,鮮被提及。希伯來(lái)歷史上涌現(xiàn)出許多杰出的優(yōu)秀女性,但《圣經(jīng)》對(duì)她們的記載極其簡(jiǎn)略。例如:女先知米利安,與摩西、亞倫有著同等重要的地位,不僅是女性的領(lǐng)導(dǎo)者,而且還曾經(jīng)救過(guò)摩西,在以色列人走出埃及的過(guò)程中起到了無(wú)可替代的作用。但是,《圣經(jīng)》對(duì)其描寫(xiě)很少。
與之相比,男性則幾乎壟斷了《圣經(jīng)》的所有章節(jié)?!妒ソ?jīng)》中幾乎所有重要的人物都是男性。上帝稱(chēng)為我們的“父親”,上帝的的后代是兒子耶穌。引領(lǐng)猶太人走出埃及的摩西,猶太人的祖先亞伯拉罕,以及耶穌的十三個(gè)門(mén)徒,全部都是男性。而且,《圣經(jīng)》對(duì)其中的男性描寫(xiě)非常詳盡,不吝筆墨。
總之,《圣經(jīng)》是一本站在男性立場(chǎng)上,為男性書(shū)寫(xiě)的宗教典籍。作為基督教的重要經(jīng)典,《圣經(jīng)》影響廣泛,其所散播的性別觀念滲透到社會(huì)的方方面面,使得西方社會(huì)奠定了男尊女卑的格調(diào),使得英語(yǔ)語(yǔ)言存在嚴(yán)重的性別歧視色彩。
(三)性別角色社會(huì)化
性別角色社會(huì)化指?jìng)€(gè)體在社會(huì)生活中逐漸學(xué)會(huì)按照自己的性別角色規(guī)范行事的過(guò)程[6]76。每個(gè)人一出生甚至在出生前,就可能被身邊的人們按照社會(huì)性別的固定模式來(lái)對(duì)待和教育。兒童從父母、教師、同輩、媒體、社會(huì)等多方面得到性別角色的信息,并受其影響,從中學(xué)習(xí)到怎樣做符合社會(huì)規(guī)范的“男孩”或“女孩”,“男人”或“女人”。而且,性別角色社會(huì)化是一個(gè)持續(xù)的過(guò)程,會(huì)貫穿于每個(gè)人的一生。
性別角色社會(huì)化是自動(dòng)的無(wú)意識(shí)的過(guò)程,但同時(shí)又是每個(gè)人積極參與的過(guò)程。在性別角色形成過(guò)程中,人們?cè)诤艽蟪潭壬鲜遣粫?huì)意識(shí)到文化如何影響兩性,并對(duì)不遵從社會(huì)期望者進(jìn)行懲罰[8]169。但是,性別角色社會(huì)化并不是一個(gè)完全被動(dòng)的過(guò)程。在社會(huì)性別期望的驅(qū)使下,每個(gè)人會(huì)不由自主地按照社會(huì)期望進(jìn)行性別角色社會(huì)化。根據(jù)心理學(xué)家的說(shuō)法,“每個(gè)人不是被動(dòng)的接受性別角色社會(huì)化,而是按照他對(duì)自我、社會(huì)期望、行為規(guī)范的理解,積極的參與這一個(gè)過(guò)程”[8]169。
同時(shí),在性別角色社會(huì)化過(guò)程中,一系列因素,如生產(chǎn)方式、政治制度、社會(huì)等級(jí)劃分等,會(huì)影響到性別角色的形成[9]。換句話說(shuō),社會(huì)性別角色的形成,會(huì)受一定社會(huì)背景的影響,如:語(yǔ)言、媒體、文學(xué)、宗教、教育機(jī)構(gòu)、家庭等。每一個(gè)人都會(huì)參照他的生長(zhǎng)環(huán)境,如家庭、教育材料等,來(lái)逐漸形成適當(dāng)?shù)男詣e角色。
幾千年來(lái),英美國(guó)家是典型的父權(quán)制社會(huì)。男性壟斷著社會(huì)的政治、經(jīng)濟(jì)、文化等公共領(lǐng)域,女性的社會(huì)活動(dòng)范圍則局限在家庭。在當(dāng)時(shí)的社會(huì)意識(shí)形態(tài)下,女性與男性相比天生具有缺陷,是不完整的人。而且,女性是“人類(lèi)墮落”和“人類(lèi)原罪”的根源。
于是,在這樣的社會(huì)環(huán)境下,女性一出生就被灌輸相應(yīng)的性別觀念,并逐步的進(jìn)行性別角色社會(huì)化。她們漸漸的接受其性別角色定位,認(rèn)為女性是低卑的,一生應(yīng)依附于男性,并遵從相應(yīng)的道德規(guī)范,承擔(dān)起家庭范圍內(nèi)的社會(huì)職責(zé)。這使得女性認(rèn)同社會(huì)中的性別不平等,對(duì)語(yǔ)言中性別歧視現(xiàn)象熟視無(wú)睹,從而在一定程度上使得英語(yǔ)語(yǔ)言中的性別歧視一直延續(xù)下去。
三、結(jié)語(yǔ)
語(yǔ)言的產(chǎn)生離不開(kāi)一定的社會(huì)環(huán)境。因此,英語(yǔ)語(yǔ)言中的性別歧視不僅僅是一種語(yǔ)言現(xiàn)象,它是英美國(guó)家男女不平等的社會(huì)現(xiàn)實(shí)的反映。隨著三次婦女運(yùn)動(dòng)的高漲,英美國(guó)家女權(quán)主義者積極投身到語(yǔ)言改革與規(guī)劃活動(dòng)中來(lái),英語(yǔ)中的性別歧視現(xiàn)象得到一定改觀。但是,由于歷史、文化、社會(huì)等因素,英語(yǔ)中的性別歧視并未完全消除。只有進(jìn)一步深化性別研究,提高女性社會(huì)地位,完全實(shí)現(xiàn)男女平等,才能使語(yǔ)言真正的平等。