C語言基礎(chǔ)教程_第1頁
C語言基礎(chǔ)教程_第2頁
C語言基礎(chǔ)教程_第3頁
C語言基礎(chǔ)教程_第4頁
C語言基礎(chǔ)教程_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、C語言基礎(chǔ)教程(二)數(shù)據(jù)類型、變量和運(yùn)算符本節(jié)首先介紹Turbo C程序的基本組成部分;然后介紹Turbo C的數(shù)據(jù)類型、變量 類型、變量的初始化和賦值;最后介紹Turbo C的有關(guān)操作。通過本節(jié)的學(xué)習(xí),可以對Turbo C語言有一個(gè)初步認(rèn)識。1. Turbo C程序的一般組成部分Turbo C 2.0象其它語言一樣按其規(guī)定的格式和提供的語句由用戶編寫應(yīng)用程序。請看下面一段Turbo C源程序。例1:/*Example program of Turbo C*/#in clude 件說明*/void lgc(void);數(shù)說明*/char an swer;定義全程變量*/int mai n()*

2、主函數(shù)定義*/*包含文/*子函/*a;char/*定義局部變量*/clrscr();gotoxy(12,3);puts(Welcome to use Turbo C2.0!);gotoxy(15, 13);prin tf(-Exit);gotoxy(15, 15);prin tf(-Co ntin ue);while(1)a=getch();if(a=27)break;if(a=13)lgc();if(an swer=y|a nswer=Y)gotoxy(23,14);puts(Please Write to the Compa ny); getch();break;return(O);voi

3、d Igc(void)clrscr();gotoxy(12,8);printf(The Excellent Selection!);gotoxy(21,12);printf(Do you have any question?(Y/N);an swer=getche();由例子程序可以看出,Turbo C源程序主要有以下幾個(gè)特點(diǎn):1.程序一般用小寫字母書寫;2.大多數(shù)語句結(jié)尾必須要用;作為終止符,否則Turbo C不認(rèn)為該語句結(jié)束;3.每個(gè)程序必須有一個(gè)而且只能有一個(gè)稱作主函數(shù)的main()函數(shù);4.每個(gè)程序體(主函數(shù)和每個(gè)子函數(shù),如上例中的main()函數(shù)和sub()函數(shù)必須 用一對花括號和括

4、起來;5.一個(gè)較完整的程序大致包括:包含文件(一組#include語句)、用戶函數(shù)說明部分、全程變量定義、主函數(shù)和若干子函數(shù)組成。在主函數(shù)和子函數(shù)中又包括局部變量定義、 若干個(gè)Turbo C庫函數(shù)、控制流程語句、用戶函數(shù)的調(diào)用語句等;6.注釋部分包含在/*和*/之間,在編譯時(shí)它被Turbo C編譯器忽略。說明:1.象其它一些語言一樣,Turbo C的變量在使用之前必須先定義其數(shù)據(jù)類型,未經(jīng)定義的變量不能使用。定義變量類型應(yīng)在可執(zhí)行語句前面,如上例main()函數(shù)中的第一條語句就是變量定義語句,它必須放在第一各執(zhí)行語句clrscr()前面。2.在Turbo C中,大、小寫字母是有區(qū)別的,相同字母

5、的大、小寫代表不同的變量。3.Turbo C程序的書寫格式非常靈活,沒有嚴(yán)格限制。例1的主函數(shù)可寫成:main( )char c; clrscr(); gotoxy(12,3);puts(Welcome to use Turbo C2.0!); gotoxy(15,13);printf(-Continue); gotoxy(15,15);.這樣寫語法上沒有錯(cuò)誤,但閱讀起來不方便,同時(shí)也使得程序?qū)哟尾幻鞔_。作者建 議用Turbo C編程時(shí),一行一條語句,遇到嵌套語句向后縮進(jìn),必要時(shí)對程序加上注釋行。這樣可以便程序結(jié)構(gòu)清楚、易于閱讀、維護(hù)和修改。通過以上介紹,可以得出Turbo C源程序的一般形式

6、為:包含文件子函數(shù)類型說明 全程變量定義mai n()局部變量定義程序體sub1()局部變量定義程序體sub2()局部變量定義程序體subN() 局部變量定義程序體其中sub1(),subN()代表用戶定義的子函數(shù),程序體指Turbo C 2.0提供的任何庫函數(shù)調(diào)用語句、控制流程語句或其它用子函數(shù)調(diào)用語句等。1.數(shù)據(jù)類型在Turbo C語言中,每個(gè)變量在使用之前必須定義其數(shù)據(jù)類型。Turbo C有以下幾種類型:整型(int)、浮點(diǎn)型(float)、字符型(char)、指針型(*)、無值型(void)以及結(jié)構(gòu)(struct)和聯(lián)合(union)。其中前五種是Turbo C的基本數(shù)據(jù)類型、后兩種數(shù)

7、據(jù)類型(結(jié)構(gòu) 和聯(lián)合)將在第五章介紹。2.1整型(int)一、整型數(shù)說明加上不同的修飾符,整型數(shù)有以下幾種類型;signed short int有符號短整型數(shù)說明。簡寫為short或int,字長為2字節(jié)共16位二進(jìn)制數(shù),數(shù)的范圍是-3276832767。signed long int有符號長整型數(shù)說明。簡寫為long,字長為4字節(jié)共32位二進(jìn)制數(shù),數(shù)的范圍是-21474836482147483647。unsigned short int無符號短整型數(shù)說明。簡寫為unsigned int,字長為2字節(jié)共16位二進(jìn)制數(shù),數(shù)的范圍是065535。unsigned long int無符號長整型數(shù)說明。

8、 簡寫為unsigned long,字節(jié)共32位二進(jìn)制數(shù),數(shù)的范圍是04294967295。二、整型變量定義可以用下列語句定義整型變量int a, b;un sig ned long c;二、整型常數(shù)表示按不同的進(jìn)制區(qū)分,整型常數(shù)有三種表示方法:十進(jìn)制數(shù):以非0開始的數(shù) 如:220, -560, 45900八進(jìn)制數(shù):以0開始的數(shù) 如:06; 0106, 05788十六進(jìn)制數(shù):以0X或0 x開始的數(shù) 如:0X0D, 0XFF, 0 x4e另外,可在整型常數(shù)后添加一個(gè)L或T字母表示該數(shù)為長整型數(shù),女口22L,0773L, 0Xae4l。2.2浮點(diǎn)型(float)一、浮點(diǎn)數(shù)說明Turbo C中有以下

9、兩種類型的浮點(diǎn)數(shù):float單浮點(diǎn)數(shù)。字長為4個(gè)字節(jié)共32位二進(jìn)制數(shù),數(shù)的范圍是3.4x10-38E3.4x10+38E。double雙浮點(diǎn)數(shù)。字長為8個(gè)字節(jié)共64位二進(jìn)制數(shù),數(shù)的范圍是1.7x10-308E1.7x10+308E。說明:浮點(diǎn)數(shù)均為有符號浮點(diǎn)數(shù),沒有無符號浮點(diǎn)數(shù)。二、浮點(diǎn)型變量定義可以用下列語句定義浮點(diǎn)型變量:float a, f;/*a, f被定義為單浮點(diǎn)型變量*/double b;/*b被定義為雙浮點(diǎn)型變量*/三、浮點(diǎn)常數(shù)表示例如:+29.56, -56.33, -6.8e-18, 6.365說明:1.浮點(diǎn)常數(shù)只有一種進(jìn)制(十進(jìn)制)。2.所有浮點(diǎn)常數(shù)都被默認(rèn)為double。

10、3.絕對值小于1的浮點(diǎn)數(shù),其小數(shù)點(diǎn)前面的零可以省略。如:0.22可寫為.22,-0.0015E-3可寫為-.0015E-3。4. Turbo C默認(rèn)格式輸出浮點(diǎn)數(shù)時(shí),最多只保留小數(shù)點(diǎn)后六位。2.3字符型(char)字長為4/*a、b被定義為有符號短整型變量/*c被定義為無符號長整型變量*/*/加上不同的修飾符,可以定義有符號和無符號兩種類型的字符型變量,例如:char a:/*a被定義為有符號字符變量*/un sig ned char I;/*l被定義為無符號字符變量*/字符在計(jì)算機(jī)中以其ASCII碼方式表示,其長度為1個(gè)字節(jié),有符號字符型數(shù)取值 范圍為-128127,無符號字符型數(shù)到值范圍是

11、0255。因此在Turbo C語言中,字符型數(shù)據(jù) 在操作時(shí)將按整型數(shù)處理,如果某個(gè)變量定義成char,則表明該變量是有符號的,即它將 轉(zhuǎn)換成有符號的整型數(shù)。Turbo C中規(guī)定對ASCII碼值大于0 x80的字符將被認(rèn)為是負(fù)數(shù)。例如ASCII值為0 x8c的字符,定義成char時(shí),被轉(zhuǎn)換成十六進(jìn)制的整數(shù)0 xff8c。這是因當(dāng)ASCII碼值大于0 x80時(shí),該字節(jié)的最高位為1,計(jì)算機(jī)會認(rèn)為該數(shù)為負(fù)數(shù),對于0 x8c表示的數(shù)實(shí)際上是-74(8c的各位取反再加1),而-74轉(zhuǎn)換成兩字節(jié)整型數(shù)并在計(jì)算機(jī)中表示時(shí)就是0 xff8c(對0074各位取反再加1)。因此只有定義為unsigned char

12、0 x8c轉(zhuǎn)換成整型數(shù)時(shí)才是8c。這一 點(diǎn)在處理大于0 x80的ASCII碼字符時(shí)(例如漢字碼)要特別注意。一般漢字均定義為unsign ed char(在以后的程序中會經(jīng)常碰到)。另外,也可以定義一個(gè)字符型數(shù)組(關(guān)于數(shù)組后面再作詳細(xì)介紹),此時(shí)該 數(shù)組表示一個(gè)字符串。例如:char str10;計(jì)算機(jī)在編譯時(shí),將留出連續(xù)10個(gè)字符的空間,即str0到str9共10個(gè)變量,但只有前9個(gè)供用戶使用。第10個(gè)str9用來存放字符串終止符NULL即0,但終止符是 編編譯程序自動(dòng)加上的,這一點(diǎn)應(yīng)特別注意。二、字符常數(shù)表示能用符號表示的字符可直接用單引號括起來表示,如a, 9, Z,也可用該字符的ASC

13、II碼值表示,例如十進(jìn)制數(shù)85表示大寫字母U,十六進(jìn)制數(shù)0 x5d表示,八進(jìn)制數(shù)0102表示大寫字母B。一些不能用符號表示的控制符,只能用ASCII碼值來表示,如十進(jìn)制數(shù)10表示換行,下六進(jìn)制數(shù)0 x0d表示回車,八進(jìn)制數(shù)033表示Esc。Turbo C2.0中也有另外一種表示表示方法,如033表示Esc,這里 0符號后面的數(shù)字表示十六進(jìn)制的ASCII值當(dāng)然這種表示萬法也適用于可睦接用符號表示的字符。另外,Turbo C2.0中有些常用的字符用以下特殊規(guī)定來表示:規(guī)定符等價(jià)于含義fX0C換頁rX0D回車tX09制表鍵nX0A換行X5C符X27I!、符對于字符串常量,一般用雙引號括起來表示2.4

14、指針型(*)指針是一種特殊的數(shù)據(jù)類型,在其它語言中一般沒有。指針是指向變量的地址,實(shí)質(zhì) 上指針就是存貯單元的地址。根據(jù)所指的變量類型不同,可以是整型指針(int *)、浮點(diǎn)型指針(float *)、字符型指針(char *)、結(jié)構(gòu)指針(struct *)和聯(lián)合指針(union *)(結(jié)構(gòu)指針和聯(lián)合指針將在第4節(jié)中介紹)。2.5無值型(void)無值型字節(jié)長度為0,主要有兩個(gè)用途:一是明確地表示一個(gè)函數(shù)不返回任何值一是產(chǎn)生一個(gè)同一類型指針(可根據(jù)需要?jiǎng)討B(tài)分配給其內(nèi)存)。例如:void *buffer;/*buffer被定義為無值型指針*/2關(guān)鍵字和標(biāo)識符autodoubleintstructbr

15、eakelselongswitchcaseenumregistertypedefcharexternreturnunioncon stfloatshortun sig nedcon ti nueforsig nedvoiddefaultgotosizeofvolatiledoifwhilestaticcdeclfarn ear由ANSI標(biāo)準(zhǔn)定義的共32個(gè)X22如Hello Turbo C2.03.1關(guān)鍵字所謂關(guān)鍵字就是已被 不能用作變量名、函數(shù)名等。有以下關(guān)鍵字:擴(kuò)展的共11個(gè)Turbo C2.0Turbo C2.0asmTurbo C2.0本身使用,不能作其它用途使用的字。例如關(guān)鍵字csds

16、esin terrupt pascalhugeX27I!3.2標(biāo)識符所謂標(biāo)識符是指常量、變量、語句標(biāo)號以及用戶自定義函數(shù)的名稱。Turbo C2.0標(biāo)識符的定義十分靈活。作為標(biāo)識符必須滿足以下規(guī)則:1.所有標(biāo)識符必須由一個(gè)字母(az, AZ)或下劃線(_)開頭;2.標(biāo)識符的其它部分可以用字母、下劃線或數(shù)字(09)組成;3.大小寫字母表示不同意義,即代表不同的標(biāo)識符4.標(biāo)識符只有前32個(gè)字符有效;5.標(biāo)識符不能使用Turbo C2.0的關(guān)鍵字。下面舉出幾個(gè)正確和不正確的標(biāo)識符:正確smart _decisi on key_board FLOAT3.變量4.1變量說明Turbo C2.0規(guī)定所有變

17、量在使用前都必須中以說明。一條變量說明語句由數(shù)據(jù)類型和其后的一個(gè)或多個(gè)變量名組成。變量說明的形式如下:類型變量表;這里類型是指Turbo C2.0的有效數(shù)據(jù)類型。變量表是一個(gè)或多個(gè)標(biāo)識符名,每個(gè)標(biāo) 識符之間用,”分隔。例如:int i, j, k;un sig ned char c, str5, *p;4.2變量種類變量可以在程序中三個(gè)地方說明:函數(shù)內(nèi)部、函數(shù)的參數(shù)定義中或所有的函數(shù)外部。根據(jù)所定義位置的不同,變量可分為局部變量、形式參數(shù)和全程變量。一、局部變量局部變量是指在函數(shù)內(nèi)部說明的變量(有時(shí)也稱為自動(dòng)變量)。用關(guān)鍵字auto進(jìn)行說明,當(dāng)auto省略時(shí),所有的非全程變量都被認(rèn)為是局部變量

18、,所以auto實(shí)際上從來不用。局部變量在函數(shù)調(diào)用時(shí)自動(dòng)產(chǎn)生,但不會自動(dòng)初始化,隨函數(shù)調(diào)用的結(jié)束,這個(gè)變量也就自動(dòng)消失了,下次調(diào)用此函數(shù)時(shí)再自動(dòng)產(chǎn)生,還要再賦值,退出時(shí)又自動(dòng)消失。二、形式參數(shù)形式參數(shù)是指在函數(shù)名后面的小括號里定義的變量,用于接受來自調(diào)用函數(shù)的參數(shù)。形式參數(shù)在函數(shù)內(nèi)部可以象其它局部變量那樣來作用。例如:puthz(i nt x, int y, int color, char *p)int i, j, k;/*定義局部變量*/程序體其中x, y, color, *p為函數(shù)的形式參數(shù),不需要再進(jìn)行說明就可在該函數(shù)內(nèi)直使用。不正確5smartbomb? key.boardfloat三、

19、全程變量全程變量是指在所有函數(shù)之外說明的變量,它在整個(gè)程序內(nèi)部者是”可見的,可以被任何一個(gè)函數(shù)使用,并且在整個(gè)程序的運(yùn)行中都保留其值。全程變量只要滿足在使用它以前和函數(shù)以外這兩個(gè)條件,可在程序的任何位置進(jìn)行說明,習(xí)慣上通常在程序的主函數(shù)前 說明。例如:#in cludeint test;/*定義全程變量*/所以可作為函數(shù)之間傳遞參數(shù)的手段,但全程變量太多時(shí),內(nèi)存開銷變大。4.3變量存儲類型Turbo C2.0支持四種變量存儲類型。說明符如下:autostaticexternregisterF面分別來介紹。一、autoauto稱為自動(dòng)變量,已在前面作了介紹,這里不再重復(fù)。二、staticvoid

20、 f1(i nt x, float y); /*void f2(void);mai n()test=5;f1(20, 5.5);f2();150*/void f1(i nt x, float y)float z;z=x*y; test=test+z;void f2(void)int coun t=10;test=test*co unt;子函數(shù)說明*/*子函數(shù)說明*/*給全程變量賦值*/*調(diào)用有形式參數(shù)的子函數(shù)f1()*/*test的值變成115*/*調(diào)用f2(), test的值變?yōu)?/*z定義為局部變量*/*計(jì)算*/*定義局部變量并初始化*/static稱為靜態(tài)變量。根據(jù)變量的類型可以分為靜態(tài)

21、局部變量和靜態(tài)全程變量。1.靜態(tài)局部變量它與局部變量的區(qū)別在于:在函數(shù)退出時(shí),這個(gè)變量始終存在,但不能被其它函數(shù) 使用,當(dāng)再次進(jìn)入該函數(shù)時(shí),將保存上次的結(jié)果。其它與局部變量一樣。2.靜態(tài)全程變量Turbo C2.0允許將大型程序分成若干獨(dú)立模塊文件分別編譯,然后將所有模塊的目標(biāo)文件連接在一起,從而提高編譯速度,同時(shí)也便于軟件的管理和維護(hù)。靜態(tài)全程變量就是指只在定義它的源文件中可見而在其它源文件中不可見的變量。它與全程變量的區(qū)別是:全程變量可以再說明為外部變量(extern),被其它源文件使用,而靜態(tài)全程變量卻不能再被說明為外部的,即只能被所在的源文件使用。三、externextern稱為外部變

22、量。為了使變量除了在定義它的源文件中可以使用外,還要被其它文件使用。因此,必須將全程變量通知每一個(gè)程序模塊文件,此時(shí)可用extern來說明。例如:文件1為filel.c文件2為file2.對于以上兩個(gè)文件file1.c和file2.c,用Turbo C2.0的集成開發(fā)環(huán)境進(jìn)行編譯連 接時(shí),首先應(yīng)建立一個(gè).prj的文件。例如file.prj,該文件內(nèi)容如下:file1.cfile2.c然后將file.prj的文件名寫入主菜單Project中的Project Name項(xiàng)中。 再用F9編譯連接,就可產(chǎn)生一個(gè)文件名為fioe.exe的可執(zhí)行文件。外部變量和FORTRAN言中的COM MOM義的公共變量

23、一樣。四、registercint i, j;/*定義全程變量*/extern int i, j;/*說明將i, j從文件1中復(fù)制過來*/char c;/*將c復(fù)制過來*/void fun c1(i nt k);用戶定義函數(shù)*/main ()float k;/*定義靜態(tài)變量*/j*5/100;func1(20);/*調(diào)用函數(shù)*/fun c2();func1(int k) /*用戶定義函數(shù)*/fun c2()exter n char c;/*statick=i/1.5;i=register稱為寄存器變量。它只能用于整型和字符型變量。定義符register說明的變量被Turbo C2.0存儲在CP

24、U的寄存器中,而不是象普通的變量那樣存儲在內(nèi)存中,這樣可以提高運(yùn)算速度。 但是Turbo C2.0只允許同時(shí)定義兩個(gè)寄存器變量,一旦超過兩個(gè),編譯程序會自動(dòng)地將超過限制數(shù)目的寄存器變量當(dāng)作非寄存器變量來處理。因此,寄存器變量常用在同一變量名頻繁出現(xiàn)的地方。另外,寄存器變量只適用于局部變量和函數(shù)的形式參數(shù),它屬于auto型變量,因此,不能用作全程變量。定義一個(gè)整型寄存器變量可寫成:register int a;對于以上所介紹的變量類型和變量存儲類型將會在以后的學(xué)習(xí)中,通過例行程序中的定義、使用來逐漸加深理解。4.4數(shù)組變量所謂數(shù)組就是指具有相同數(shù)據(jù)類型的變量集,并擁有共同的名字。數(shù)組中的每個(gè)特定

25、元素都使用下標(biāo)來訪問。數(shù)組由一段連續(xù)的存貯地址構(gòu)成,最低的地址對應(yīng)于第一個(gè)數(shù)組 元素,最高的地址對應(yīng)最后一個(gè)數(shù)組元素。數(shù)組可以是一維的、也可以是多維的。Turbo C2.0象它高級語方一樣也使用數(shù)組變量。一、一維數(shù)組一維數(shù)組的說明格式是:類型 變量名長度;類型是指數(shù)據(jù)類型,即每一個(gè)數(shù)組元素的數(shù)據(jù)類型,包括整數(shù)型、浮點(diǎn)型、字符型、 指針型以及結(jié)構(gòu)和聯(lián)合。例如:int a10;un sig ned long a20;char *s5;char *f;說明:1.數(shù)組都是以0作為第一個(gè)元素的下標(biāo),因此,當(dāng)說明一個(gè)int a16的整型數(shù)組時(shí),表明該數(shù)組有16個(gè)元素,a0a15,個(gè)元素為一個(gè)整型變量。2.

26、大多數(shù)字符串用一維數(shù)組表示。數(shù)組元素的多少表示字符串長度,數(shù)組名表示字符串中第一個(gè)字符的地址,例如:在語句char str 8說明的數(shù)組中存入hello字符串后,str表示第一個(gè)字母h所在的內(nèi)存單元地址。str0存放的是字母h的ASCII碼值,以此類推,str4存入的是字母0的ASCII碼值,str5則應(yīng)存放字符串終止符0。3. Turbo C2.0對數(shù)組不作邊界檢查。例如用下面語句說明兩個(gè)數(shù)組char str15, str26;當(dāng)賦給str1一個(gè)字符串ABCDEFG時(shí),只有ABCDE被賦給,E將會自動(dòng)的 賦 給str2,這點(diǎn)應(yīng)特別注意。三、多維數(shù)組多維數(shù)組的一般說明格式是:類型 數(shù)組名第n維

27、長度第n-1維長度.第1維長度;這種說明方式與BASIC FORTRA等語言中多維數(shù)組的說明不一樣。例如:int m32;/*定義一個(gè)整數(shù)型的二維數(shù)組*/char c223;/*定義一個(gè)字符型的三維數(shù)組*/數(shù)組m32共有3*2=6個(gè)元素,順序?yàn)椋簃00, m01, m10, m11, m20, m21;數(shù)組c223共有2*2*3=12個(gè)元素,順序?yàn)?c000, c001, c002,c010, c011, c012,c100, c101, c102,c110, c111, c112,數(shù)組占用的內(nèi)存空間(即字節(jié)數(shù))的計(jì)算式為:字節(jié)數(shù)=第1維長度*第2維長度*第n維長度*該數(shù)組數(shù)據(jù)類型占用的字節(jié)數(shù)

28、4.5變量的初始化和賦值 一、變量的初始化變量的初始化是指變量在被說明的同時(shí)賦給一個(gè)初值。Turbo C2.0中外部變量和靜態(tài)全程變量在程序開始處被初始化,局部變量包括靜態(tài)局部變量是在進(jìn)入定義它們的函數(shù)或復(fù)合語句時(shí)才作初始化。所有全程變量在沒有明確的初始化時(shí)將被自動(dòng)清零,而局部變量和寄存器變量在未賦值前其值是不確定的。對于外部變量和靜態(tài)變量,初值必須是常數(shù)表達(dá)式,而自動(dòng)變量和寄存器變量可以 是任意的表達(dá)式,這個(gè)表達(dá)式可以包括常數(shù)和前面說明過的變量和函數(shù)。1.單個(gè)變量的初始化例如:float f0, f1=0.2;/*定義全程變量,在初始化時(shí)f0被清零,f1被賦0.2*/2.數(shù)組變量的初始化例如

29、:mai n()in t p23=2, -9, 0, 8, 2, -5;/*mai n()static int i=10, j; /*不確int k=i*5;0*5=50*/char c=y;定義靜態(tài)局部變量,初始化時(shí)i被賦10, j定*/*定義局部變量,初始化時(shí)k被賦1/*定義字符型指什變量并初始化*/*定義數(shù)組p并初始化定義數(shù)組mint m24=27, -5, 19, 3, 1,8,-14, -2;/*并初始化*/char *f=A, B, C;始化*/從上例可以看出:Turbo C2.0中數(shù)組進(jìn)行初始化有下述規(guī)則(1)數(shù)組的每一行初始化賦值用并用,分開,總的再加一對括起來,最后以;表示結(jié)

30、束。(2)多維數(shù)組的存儲是按最右維數(shù)的變量變化最快的原則。(3)多維數(shù)組存儲是連續(xù)的,因此可以用一維數(shù)組初始化的辦法來初始化多維數(shù) 組。例如:int x23=1,2, 3, 4, 5, 6;/*用一維數(shù)組來初始化二維數(shù)組*/(4)對數(shù)組初始化時(shí),如果初值表中的數(shù)據(jù)個(gè)數(shù)比數(shù)組元素少,則不足的數(shù)組元素用0來填補(bǔ)。(5)對指針型變量數(shù)組可以不規(guī)定維數(shù),在初始化賦值時(shí),數(shù)組維數(shù)從0開始被連續(xù)賦值。例如:char *f=a, b, c;初始化時(shí)將會給3個(gè)字符指針賦值,即:*f0=a, *f1=b, *f2=c。3.指針型變量的初始化例如:mai n()int *i=7899;float *f=3.141

31、5926; /* char*s=Good;二、變量的賦值變量賦值是給已說明的變量賦給一個(gè)特定值。1.單個(gè)變量的賦值(1)整型變量和浮點(diǎn)變量這兩種變量米用卜列格式賦值 變量名=表達(dá)式;例如:mai n()Iint a, m;/*定義局部整型變量a, m*/*定義數(shù)組f并初/*定義整型數(shù)指針變量并初始化*/定義浮點(diǎn)數(shù)指針變量并初始化*/*定義字符型指針變量并初始化*/float n;/*定義局部浮點(diǎn)變量f*/a=100, m=20;/*給變量賦值*/n=a*m*0.1;說明:Turbo C2.0中允許給多個(gè)變量賦同一值時(shí)可用連等的方式。例如:mai n()int a, b, c;a=b=c=0;/

32、*同時(shí)給a,b,c賦值*/(2)字符型變量字符型變量可以用三種方法賦值。 例如:mai n()char a0, a1, a2;a0=b;a仁50;0賦給a1*/a2=x0d;(3)指針型變量例如:mai n()int *i;char *str;*i=100;str=Good;*i表示i是一個(gè)指向整型數(shù)的指針量的地址。*str表示str是一個(gè)字符型指針,即保留某個(gè)字符地址。在初始化時(shí),str沒有什么特殊的值,而在執(zhí)行str=Good時(shí),編譯器先在目標(biāo)文件的某處保留一個(gè)空間存放Good0的字符串,然后把這個(gè)字符串的第一個(gè)字母G的地址賦給str,其中字符串結(jié)尾符0是編譯程序自動(dòng)加上的。對于指針變量的

33、使用要特別注意。上例中兩個(gè)指針在說明前沒有初始化,因此這兩指針為隨機(jī)地址,在小存儲模式下使用將會有破壞機(jī)器的危險(xiǎn)。正確的使用辦法如下:/*定義局部字符型變量aO, a1, a2*/*將字母b賦給a0*/*將數(shù)字2(十進(jìn)制ASCII值為5/*將回車符賦給a2*/即*i是一個(gè)整型變量,i是一個(gè)指向該整型變n=a*m*0.1;例如:mai n()int *i;char *str;i=(i nt*)malloc(sizeof( in t);i=420;str=(char*)malloc(20);str=Good, An swer!;上例中,函數(shù)(int*)malloc(sizeof(int)表示分配連

34、續(xù)的sizeof(int)=2個(gè)字節(jié)的整型數(shù)存儲空間并返回其首地址。同樣(char*)malloc(20)表示分配連續(xù)20個(gè)字節(jié)的字符存儲空間并返回首地址(有關(guān)該函數(shù)以后再詳述)。由動(dòng)態(tài)內(nèi)存分配函數(shù)malloc()分配了 內(nèi)存空間后,這部分內(nèi)存將專供指針變量使用。如果要使i指向三個(gè)整型數(shù),則用下述方法。例如:#in cludemai n()int *a;a=(i nt*)malloc(3*sizeof(i nt);*a=1234;*(a+1)=4567;*(a+2)=234;*i=1234表示把1234存放到i指向的地址中去,但對于*(i+1)=4567,如果認(rèn)為將4567存放到i指向的下一個(gè)

35、字節(jié)中就錯(cuò)了。Turbo C2.0中只要說明i為整型指針,則(i+1)等價(jià)于i+1*sizeof(i nt)同樣(i+2)等價(jià)于i+2*sizeof( int)2.數(shù)組變量的賦值(1)整型數(shù)組和浮點(diǎn)數(shù)組的賦值例如:mai n()int m22;float n3;m00=0, m01=17, m10=21;/*數(shù)組元素賦值*/n 0=109.5, n1=-8.29, n2=0.7;(2)字符串?dāng)?shù)組的賦值例如:main ()char s30;strcpy(s, Good News!);上面程序在編譯時(shí),遇到char s30這條語句時(shí),編譯程序會在內(nèi)存的某處留出 連續(xù)30個(gè)字節(jié)的區(qū)域,并將第一個(gè)字節(jié)

36、的地址賦給s。當(dāng)遇到strcpy( strcpy為Turbo C2.0的函數(shù))時(shí),首先在目標(biāo)文件的某處建立一個(gè)Good News!0的字符串。其中0表示字符串終止,終止符是編譯時(shí)自動(dòng)加上的,然后一個(gè)字符一個(gè)字符地復(fù)制到s所指的內(nèi)存區(qū)域。因此定義字符串?dāng)?shù)組時(shí),其元素個(gè)數(shù)至少應(yīng)該比字符串的長度多1。1.字符串?dāng)?shù)組不能用=直接賦值,即s=Good News!是不合法的。所以應(yīng)分清字 符串?dāng)?shù)組和字符串指針的不同賦值方法。2.對于長字符串,Turbo C2.0允許使用下述方法:例如:mai n() char s100;strcpy(s, The writer would like to tha nk y

37、ou foryour in terest i n his book. He hopes you I!ca n get some helps from the book.);(3)指針數(shù)組賦值例如:mai n()char *f2;int *a2;f0=tha nk you; f1=GoodMorni ng;*a0=1, *a1=-11; /*三、數(shù)組與指針數(shù)組與指針有密切的聯(lián)系。數(shù)組名本身就是該數(shù)組的指針,反過來,也可以把指針看成一個(gè)數(shù)組,數(shù)組名和指針實(shí)質(zhì)上都是地址,但是指針是變量,可以作運(yùn)算。而數(shù)組名 是常量,不能進(jìn)行運(yùn)算。例如:mai n()char s30, *p; /*定義字符型數(shù)組和指

38、針變量*/p=s;/*指針p指向數(shù)組s的第一個(gè)元素s0/*給數(shù)組賦字符串*/*給字符型數(shù)組指針變量賦值*/給整型數(shù)數(shù)組指針變量賦值*/的地址*/*(p+8);/*指針p指向數(shù)組s的第9個(gè)元素s8的地址*/由上例可以看出數(shù)組和指針有如下關(guān)系:(p+i)=&(si)*(P+i)=si因此,利用上述表達(dá)式可以對數(shù)組和指針進(jìn)行互換。兩者的區(qū)別僅在于:數(shù)組s是程序自動(dòng)為它分配了所需的存儲空間;而指針p則是利用動(dòng)態(tài)分想函數(shù)為它分配存儲空間或賦給它一個(gè)已分配的空間地址。5.運(yùn)算符Turbo C的運(yùn)算符非常豐富,主要分為三大類:算術(shù)運(yùn)算符,關(guān)系運(yùn)算符與邏輯運(yùn)算符,按位運(yùn)算符。除此之外,還有一些用于完成

39、特殊任務(wù)的運(yùn)算符。下面分別進(jìn)行介紹。5.1算術(shù)運(yùn)算符Turbo C的算術(shù)運(yùn)算符如下操作符作用+加,一目取正-減,一目取負(fù)*乘/除%取模-減1+加1一、一目和二目操作一目操作是指對一個(gè)操作數(shù)進(jìn)行操作。例如:-a是對a進(jìn)行一目負(fù)操作。*(p+8);/*指針p指向數(shù)組s二目操作(或多目操作)是指兩個(gè)操作數(shù)(或多個(gè)操作數(shù))進(jìn)行操作。在Turbo C中加、減、乘、除、取模的運(yùn)算與其它高級語言相同。需要注意的是除 法和取模運(yùn)算。例如:15/2是15除以2商的整數(shù)部分715%2是15除以2的余數(shù)部分1對于取模運(yùn)算符”,不能用于浮點(diǎn)數(shù)。另外,由于Turbo C中字符型數(shù)會自動(dòng)地轉(zhuǎn)換成整型數(shù),因此字符型數(shù)也可以

40、參加二目運(yùn)算。例如:mai n()char m, n;/*定義字符型變量*/m=c:/*給m賦小寫字母c*/n=m+A-a:/*將c中的小寫字母變成大寫字母B后賦給n*/上例中m=c即m=98,由于字母A和a的ASCII碼值分別為65和97。這樣可以將 小寫字母變成大寫字母,反之,如果要將大寫字母變成小寫字母,則用c+ a-A進(jìn)行計(jì)算。二、增量運(yùn)算在Turbo C中有兩個(gè)很有用的運(yùn)算符,在其它高級語言中通常沒有。這兩個(gè)運(yùn)算符 就是增1和減1運(yùn)算符+和-,運(yùn)算符+是操作數(shù)加1,而-則是操作數(shù)減1。例如:x=x+1可寫成X+,或+XX=X-1可寫成X-,或-Xx+(x-)與+x(-x)在上例中沒有

41、什么區(qū)別,但x=m+和x=+m卻有很大差別。x=m+表示將m的值賦給x后,m加1。x=+m表示m先加1后,再將新值賦給X。三、賦值語句中的數(shù)據(jù)類型轉(zhuǎn)換類型轉(zhuǎn)換是指不同類型的變量混用時(shí)的類型改變。 在賦值語句中,類型轉(zhuǎn)換規(guī)則是:等號右邊的值轉(zhuǎn)換為等號左邊變量所屬的類型。 例如:mai n()/*定義整型變量*/*定義浮點(diǎn)型變量*/*i與j的乘積是整型數(shù),被轉(zhuǎn)換成為浮點(diǎn)/*g中的浮點(diǎn)型數(shù)轉(zhuǎn)換成為整型數(shù)賦給iint i, j; float f, g=2.58;f=i*j;數(shù)賦給f*/i=g;*/由于Turbo C按上述數(shù)據(jù)類型轉(zhuǎn)換規(guī)則 例如:mai n()因此在作除法運(yùn)算時(shí)應(yīng)特別注意。10099返回

42、1float f;int i=15;f=i/2;上面程序經(jīng)運(yùn)行后,f=7并不等于準(zhǔn)確值7.5。正確的程序應(yīng)該是mai n()float f;int i=15;f=i/2.0;也可直接將i定義為浮點(diǎn)數(shù)。5.2關(guān)系運(yùn)算符和邏輯運(yùn)算符一、邏輯運(yùn)算符邏輯運(yùn)算符是指用形式邏輯原則來建立數(shù)值間關(guān)系的符號。Turbo C的邏輯運(yùn)算符如下:操作符作用&邏輯與|邏輯或!邏輯非二、關(guān)系運(yùn)算符關(guān)系運(yùn)算符是比較兩個(gè)操作數(shù)大小的符號。Turbo C的關(guān)系運(yùn)算符如下:作用大于大于等于小于小于等于 等于 不等于關(guān)系運(yùn)算符和邏輯運(yùn)算符的關(guān)鍵是真(true)和假(false)的概念。Turbo C中true操作符=99返回1可以是不為0的任何值,而false則為0。使用關(guān)系運(yùn)算符和邏輯運(yùn)算符表達(dá)式時(shí),若表達(dá)式為真(即true)則返回1,否則,表達(dá)式為假(即false),則返回0。例如:10(2+10)返回0!1&0返力口0對上例中表達(dá)式!1&0,先求!1和先求1&0將會等于出不同的結(jié)果,那么何者優(yōu)先呢?這在Turbo C中是有規(guī)定的。有關(guān)運(yùn)算符的優(yōu)先級本節(jié)后面將會講到。5.3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論