第4部分常量變量和數(shù)組_第1頁(yè)
第4部分常量變量和數(shù)組_第2頁(yè)
第4部分常量變量和數(shù)組_第3頁(yè)
第4部分常量變量和數(shù)組_第4頁(yè)
第4部分常量變量和數(shù)組_第5頁(yè)
已閱讀5頁(yè),還剩64頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第四部分 常量和變量constants & variables北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳本部分內(nèi)容n介紹高級(jí)語(yǔ)言中常見(jiàn)的各種常量n數(shù)字常量、字符常量、字符串常量、符號(hào)常量、枚舉常量的表示或定義方法n變量n概念,定義方法,命名規(guī)則或規(guī)范nC語(yǔ)言變量的賦值、初始化和使用n變量的屬性n指針變量n構(gòu)造數(shù)據(jù)類型的基本概念n一維數(shù)組、字符數(shù)組n二維數(shù)組初步概念、定義和使用方法n結(jié)構(gòu)體n聯(lián)合北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳n運(yùn)算是計(jì)算機(jī)程序的各種計(jì)算操作n數(shù)據(jù)是程序的運(yùn)算對(duì)象n與代數(shù)運(yùn)算表達(dá)式相仿,高級(jí)語(yǔ)言中的運(yùn)算對(duì)象也分為常量和變量,常量和變量都可以出現(xiàn)在表達(dá)

2、式中,如ny = x + 5;運(yùn)算與運(yùn)算對(duì)象一、常量北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳1. 常量的概念和分類n常量n程序中直接給定n值在程序運(yùn)行過(guò)程中不可以改變的量。n各種常量n數(shù)字常量n字符常量n字符串常量n符號(hào)常量n枚舉常量北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳2. 回憶數(shù)字常量n數(shù)字常量n表示參與計(jì)算的數(shù)值,既可以是整數(shù),也可以是帶小數(shù)的實(shí)數(shù)。n整數(shù)表示方法n十進(jìn)制 如:90、255n八進(jìn)制(以0開(kāi)頭)如:0123n十六進(jìn)制(以0 x開(kāi)頭) 如:0 x5a、0 x23ffn實(shí)數(shù)表示方法n整數(shù)部分或小數(shù)部分為0時(shí),可以不寫(xiě)數(shù)字0,如以下表示如:0.12 .23(0.

3、23) 1.45 4.9 6.(6.0)n科學(xué)表示法如:0.12E3 5.6E-6 -7.6E12n單精度實(shí)數(shù)表示如:4.5f 6.3F 0.123E3f 5.6E-6F實(shí)數(shù)類型默認(rèn)為雙精度實(shí)數(shù)北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳2. 回憶字符常量n定義n用一對(duì)單引號(hào)知起來(lái)的單個(gè)字符n字符分類n可見(jiàn)字符 如:字母、數(shù)字、標(biāo)點(diǎn)等。n不可見(jiàn)字符 如:控制光標(biāo)移動(dòng)、使終端發(fā)出振鈴聲音的各類字符。n表示 如:0 z n t換行符橫向制表符(Tab)北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳字符換碼序列換碼序列 含義 換碼序列 含義 a 響鈴符 v 縱向制表符 b 退格符 反斜線 f

4、換頁(yè)符 ? 問(wèn)號(hào) n 換行符 單引號(hào) r 回車(chē)符 ” 雙引號(hào) t 橫向制表符北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳3. 回憶字符串常量n定義n用一對(duì)雙引號(hào)(“)引起來(lái)的0個(gè)或多個(gè)連續(xù)的字符,但不包括雙引號(hào)。n當(dāng)字符串中包含雙引號(hào)時(shí),需要用”來(lái)表示。n舉例n“This is a stringn”n“” is a double quote”n在計(jì)算機(jī)中存儲(chǔ)時(shí)以空字符0結(jié)束,但在字符串常量中不需要直接表示這個(gè)空字符。字符串中可以包含換行符表示雙引號(hào)北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳4. 符號(hào)常量n符號(hào)常量:用符號(hào)代表一定的常量n符號(hào)可以是任意的合法標(biāo)識(shí)符,但習(xí)慣使用大寫(xiě)字母和

5、下劃線組成的標(biāo)識(shí)符。n用宏命令#define定義符號(hào)常量n#define PI 3也可以定義常量表達(dá)式 #define TIMES (NUM/4)n優(yōu)點(diǎn)n有助于提高程序的可讀性n便于記憶和使用n有助于發(fā)現(xiàn)和減少程序中的錯(cuò)誤n提高程序的可維護(hù)性最好根據(jù)常量的用途和含義對(duì)常量命名是一個(gè)編譯預(yù)處理命令,它所定義的符號(hào)常量在預(yù)編譯階段被替換為對(duì)應(yīng)的字符串。必須是已定義過(guò)的符號(hào)常量北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳例/計(jì)算并輸出半徑為2.5米的圓的面積#define PI 3ain() printf(“Area = ”, PI * 2.5

6、 * 2.5); return 0;北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳5. 枚舉常量n定義n枚舉常量是一種用符號(hào)表示的整型數(shù)字常量,且有標(biāo)識(shí)符表示。n使用關(guān)鍵字enum定義nenum A, B, C, D, E = 50, F, G, H, I;nenum JAN = 1, FEB, MAR, APR, MAY, JUN, JLY, AUG, SEP, OCT, NOV, DEC;n如果枚舉常量后面給定了值,則以給定值作為枚舉符對(duì)應(yīng)的常量值。n當(dāng)枚舉符后面沒(méi)有給定值,只是一個(gè)標(biāo)識(shí)符時(shí),該枚舉常量的值等于其前面枚舉常量的值加1。如果該枚舉常量是一個(gè)標(biāo)識(shí)符時(shí)且沒(méi)有給定值,該枚舉常量的

7、值等于0。北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳枚舉量與符號(hào)常量的意義n用文字符號(hào)的形式表示常量有利于更好地理解程序意義。n例如,程序里兩個(gè)0可能會(huì)代表不同意義,它們?cè)跀?shù)值形式上沒(méi)有任何區(qū)分。但是,采用符號(hào)常量可提高可讀性,便于理解。n高級(jí)語(yǔ)言提供了用符號(hào)表示常量的辦法,在程序中統(tǒng)一使用。n好處n使程序更容易修改和閱讀二、變量及其屬性北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳1. 變量概念、定義和使用n變量n程序運(yùn)行過(guò)程中可以發(fā)生變化的量n存儲(chǔ)數(shù)據(jù)的命名對(duì)象(變量名)n變量名是標(biāo)識(shí)符。n使我們可能通過(guò)一個(gè)名字來(lái)使用存儲(chǔ)單元n變量的特點(diǎn)n變量能保存值,不會(huì)丟失。給某變量名是標(biāo)識(shí)符

8、。n變量的值可以變化n變量賦一個(gè)值之后,每次使用它總得到這個(gè)值,直到下次賦值。n對(duì)變量基本操作n賦值(寫(xiě))n取值(讀)注意:要遵循命名規(guī)范北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳2. 變量的類型和定義n變量有固定的類型,只能保存這個(gè)類型的值。n整型變量(保存 int值的變量)n雙精度變量(保存 double 值)n字符變量,n變量定義n變量必須先定義后使用n需要給出變量名和類型。n例nint m;ndouble x;n可以同時(shí)定義多個(gè)同類型的變量nint k, n, sum, count;nlong double y, z;為什么要給出類型?不給行不行?有不給的嗎?能定義一種變量存什么

9、數(shù)據(jù)都行嗎?北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳3. 變量的命名n關(guān)鍵字不能當(dāng)做變量名n變量的命名最好能反映變量的實(shí)際含義n一些行業(yè)規(guī)范里,變量命名一般還應(yīng)反應(yīng)變量的類型,有些變量命名還要反應(yīng)變量的地位(如類屬性、全局變量)n變量命名要求參見(jiàn)編碼規(guī)范北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳4. 復(fù)合結(jié)構(gòu)內(nèi)的局部變量n復(fù)合結(jié)構(gòu)中可以定義局部變量,在內(nèi)部使用n變量定義應(yīng)出現(xiàn)在所有語(yǔ)句之前變量定義序列語(yǔ)句序列n有些C+沒(méi)有這個(gè)要求n一個(gè)復(fù)合結(jié)構(gòu)里不能定義多個(gè)同名的變量。北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳5. 變量的取值與賦值n取值:計(jì)算中遇到變量,取其值參與計(jì)算nx

10、 + sin(3.2 * y) - pow(x, 2)n賦值n用賦值運(yùn)算符(=,賦值號(hào))表示n賦值語(yǔ)法nVariable = Expression /賦值表達(dá)式nx = 5.0n左邊是賦值目標(biāo),右邊是提供值的表達(dá)式n賦值運(yùn)算的主要效果是把表達(dá)式的值賦給左邊變量n賦值運(yùn)算符優(yōu)先級(jí)很低。n例nx = 2 + 3 * y北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳賦值語(yǔ)句n賦值語(yǔ)句nVariable = Expression;n最基本的語(yǔ)句,完成程序里最重要的操作n程序中一般用賦值語(yǔ)句描述賦值動(dòng)作n例n重寫(xiě)由三邊求三角形面積的程序n計(jì)算中多次用半周長(zhǎng),定義變量保存這個(gè)值,可避免重復(fù)計(jì)算。北京交通

11、大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳n變量的最主要用途:變量的最主要用途:保存計(jì)算的中間結(jié)果保存計(jì)算的中間結(jié)果#include #include int main () double s; s = (3. + 5. + 7.) / 2.; printf(Area: %fn, sqrt(s*(s-3.)*(s-5.)*(s-7.) ); return 0;用于保存中間結(jié)果北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳賦值運(yùn)算符的值與結(jié)合性nVariable = Expression 整體上被稱為賦值表達(dá)式n賦值表達(dá)式也有值,就是右邊表達(dá)式的值。n賦值表達(dá)式的值通常不用,但賦值表達(dá)式的值也可

12、以用,例n y = (x = 5) + 8;n有時(shí)可以用同一表達(dá)式為多個(gè)變量賦值。ny = (z = (x = 1.0);n賦值運(yùn)算符的結(jié)合律n從右向左結(jié)合y = z = x = 1.0;簡(jiǎn)化北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳賦值與類型n給定賦值表達(dá)式nVariable = Expressionn左邊變量和右邊的表達(dá)值都有類型n規(guī)定n若表達(dá)式值與被賦值變量類型不同,該值先轉(zhuǎn)換到變量類型的值,然后賦值。n在前面程序例子里把賦值語(yǔ)句改寫(xiě)成:ns = (3 + 5 + 7) / 2;n運(yùn)行時(shí)發(fā)現(xiàn)程序的結(jié)果不對(duì),為什么?北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳6. 變量初始化n定

13、義變量時(shí)指定變量的初始值。n可用數(shù)值或者數(shù)值表達(dá)式為的變量做初始化,如ndouble s = (3 + 5 + 7) / 2.0;nlong double x = 4.5L, y = 3.24L;n初始化只能一次對(duì)一個(gè)變量做北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳7. 從鍵盤(pán)輸入數(shù)據(jù)到變量n請(qǐng)查閱并預(yù)習(xí)scanf語(yǔ)句的功能與用法n例#include “stdio.h”main() int n; scanf(“%d”, &n); printf(“輸入的值為:%d”, n); return 0;%d表示輸入整數(shù),請(qǐng)先自學(xué)%c, %s, %lf, %f的含義&n表示錄入的數(shù)轉(zhuǎn)

14、換成整數(shù)后放入n中北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳8. 賦值符與等于n賦值與數(shù)學(xué)中的“等于”完全不同。n例nx = x + 1;n“x = x + 1”在數(shù)學(xué)里為矛盾。nC語(yǔ)言中判斷兩個(gè)值是否相等,用運(yùn)算符n=n一定注意不要寫(xiě)成一個(gè)等號(hào)北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳9. 值的計(jì)算順序問(wèn)題n下面是合法語(yǔ)句nx = 2.0;ny = (x = 3.0) + x;n問(wèn)題:n執(zhí)行后y 的值是什么?n這個(gè)問(wèn)題沒(méi)有明確答案,因?yàn)榈诙€(gè)語(yǔ)句沒(méi)有語(yǔ)法錯(cuò)誤,但是定義不明確。n原因nC語(yǔ)言未規(guī)定加法對(duì)兩個(gè)運(yùn)算對(duì)象的求值順序,這種表達(dá)式的結(jié)果沒(méi)有定義。北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)

15、院 教師: 林友芳dValue35.7變量double類型名字變量的存儲(chǔ)單元地址:0 x00002f30 10. 變量的屬性圖示規(guī)定存儲(chǔ)的長(zhǎng)度和格式double dValue = 35.7;三、指針變量簡(jiǎn)介從信件投遞、找人、找地方到找存儲(chǔ)空間,保存存儲(chǔ)空間地址的方法指針變量簡(jiǎn)介北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳1. 找到目的地的辦法某宿舍宿舍號(hào)某辦公室通信地址同學(xué)或快遞根據(jù)宿舍號(hào)找到宿舍快遞或郵局根據(jù)通信地址投遞北京交大我校地址根據(jù)地址找到學(xué)校網(wǎng)站地址網(wǎng)站通知書(shū)上網(wǎng)站上腦子里信封上信封上或腦子里搜索結(jié)果上腦子里手冊(cè)上目的地地址地址保存處根據(jù)地址找到網(wǎng)站北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)

16、學(xué)院 教師: 林友芳2. 回憶數(shù)據(jù)與存儲(chǔ)空間0100000100000000000000000000000000000000存儲(chǔ)空間:以字節(jié)為單位編號(hào)普通字符型變量占8位A一個(gè)32位int占用的存儲(chǔ)空間一個(gè)float型浮點(diǎn)數(shù)所需占用的存儲(chǔ)空間0 x000000000 xFFFFFFFF存儲(chǔ)空間的編號(hào)稱為地址0 x000000010 x00000002北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳3. 存儲(chǔ)空間地址之用處與獲取n存儲(chǔ)空間地址用處n知道了地址就可能可以訪問(wèn)存儲(chǔ)空間:往其中存數(shù)據(jù);使用其中保存的數(shù)據(jù)n存儲(chǔ)空間地址獲取途徑n用&運(yùn)算符取已知變量所占用的存儲(chǔ)空間地址n使用存儲(chǔ)空

17、間申請(qǐng)功能向操作系統(tǒng)成功申請(qǐng)存儲(chǔ)空間后,相應(yīng)功能會(huì)返回得到的存儲(chǔ)空間地址。(此部分內(nèi)容見(jiàn)后續(xù)部分講解)n直接使用一些地址常量,如數(shù)組的起始地址北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳4. &運(yùn)算符說(shuō)明示例nint n = 10;n則&n代表整型變量n所占用的存儲(chǔ)空間的起始地址。n如圖所示,設(shè)n占用了0 x0012FF70-0 x0012FF73這4個(gè)字節(jié)的存儲(chǔ)空間n則&n的值為n0 x0012FF70100 x0012FF70n內(nèi)存空間北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳5. 存儲(chǔ)空間地址與保存n計(jì)算機(jī)中的內(nèi)外存的存儲(chǔ)空間非常大,可以保存大量的不同類

18、別、不用形式的數(shù)據(jù)。n要對(duì)這些數(shù)據(jù)進(jìn)行管理、使用和處理,必須記錄下這些數(shù)據(jù)所處的存儲(chǔ)位置地址,否則無(wú)法找到這些數(shù)據(jù)。n在許多高級(jí)語(yǔ)言中,提供一類用來(lái)記錄存儲(chǔ)空間地址的變量,這種變量一般被稱為指針變量。n注意,因?yàn)橥ㄟ^(guò)對(duì)保存在指針變量中的地址來(lái)直接操作存儲(chǔ)空間需要程序員的細(xì)心和經(jīng)驗(yàn),否則,一些地址值算錯(cuò)就容易使程序出錯(cuò)。因此,也有一些高級(jí)語(yǔ)言如JAVA不再設(shè)置指針變量,而通過(guò)其它機(jī)制實(shí)現(xiàn)動(dòng)態(tài)存儲(chǔ)管理。北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳6. 指針變量n指針變量n用于保存某種類型的存儲(chǔ)空間的起始地址的變量。n語(yǔ)法: 基類型 * 變量名;n例nint *pInt;ndouble *pDo

19、uble;nchar *pChar;北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳7. 指針變量的常見(jiàn)用法示例n示例1nint n;nint *pInt;npInt = &n; /取n的地址放在pInt中n示例2nint *pInt;npInt = (int *)malloc() /申請(qǐng)一塊存儲(chǔ)空間并將其地址存入pInt中;n示例3nint *pInt, narr10; /narr為一個(gè)數(shù)組npInt = narr; /使pInt中保存數(shù)據(jù)的起始地址北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳8. 間接運(yùn)算符*n指針的間接運(yùn)算符: *n如給定表達(dá)式*pInt,表示先取指針變量pI

20、nt中所存的地址值addr,然后再將addr所處的整型存儲(chǔ)空間中的值取出來(lái)作為表達(dá)式的值。n如nint n = 100, m, *p;np = &n;nm = *p + 1; /m的值將為1010X0012FF701000X0012FF700X0012FF68pn1010X0012FF6Cm北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳9. 指針變量與存儲(chǔ)單元關(guān)系圖示0X0012FF78指針變量p1550X0012FF78100X0012FF70550X0012FF78每格代表4個(gè)字節(jié)int *p1;int n = 55;int *p2;int m = 10;p1 = &n;

21、p2 = &m;0X0012FF700X0012FF740X0012FF780X0012FF7Cmp1p2n*p1的值為55,*p2的值為10問(wèn),執(zhí)行 *p1 = 100;會(huì)產(chǎn)生什么影響?北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳10. 指針變量的類型n指針變量中保存的某種類型存儲(chǔ)空間的地址n存儲(chǔ)單元的地址值是有類型的,如n存儲(chǔ)int值的存儲(chǔ)單元的地址的類型是 int *n存儲(chǔ)double值的存儲(chǔ)單元的地址的類型是double *n存儲(chǔ)char值的存儲(chǔ)單元的地址的類型是char *n不同類型值存儲(chǔ)單元的地址值屬于不同的類型nint * 和 char *屬于不同的類型ndouble

22、 * 和 int * 屬于不同的類型nshort * 和 long * 屬于不同的類型n地址值類型的不同意味著不能將類型不同的地址值賦給基類型不同的指針變量。四、構(gòu)造數(shù)據(jù)類型Constructed Data Types簡(jiǎn)單數(shù)據(jù)類型復(fù)雜數(shù)據(jù)類型北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳1. 復(fù)雜數(shù)據(jù)類型描述的需求n如何描述一組類型相同的數(shù)據(jù)?n如何描述圖片?n如何描述游戲中對(duì)象,如武器、戰(zhàn)場(chǎng)?n如何描述一個(gè)身份證?n如何描述學(xué)籍管理系統(tǒng)中的學(xué)生?n如何描述地圖?n如何描述一個(gè)圍棋棋盤(pán)?n如何描述搜索引擎的搜索結(jié)果?n北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳2. 復(fù)雜數(shù)據(jù)類型的特點(diǎn)n

23、數(shù)據(jù)不是孤立的,都相關(guān)聯(lián)的,數(shù)據(jù)之間具有關(guān)系n一個(gè)對(duì)象可能具有一組類型相同的數(shù)據(jù)n一個(gè)對(duì)象可能具有許多不同的屬性n例n給定一組關(guān)鍵詞,可以在搜索引擎上搜索到很多搜索結(jié)果n一個(gè)自然人具有許多不同的屬性n一個(gè)班級(jí)里具有許多學(xué)生n一個(gè)課堂上既有教師也有學(xué)生北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳3. 構(gòu)造數(shù)據(jù)類型n構(gòu)造數(shù)據(jù)類型n根據(jù)已定義的一個(gè)或多個(gè)數(shù)據(jù)類型用構(gòu)造的方法來(lái)定義新的數(shù)據(jù)類型。n也就是說(shuō),一個(gè)構(gòu)造類型的值可以分解成若干個(gè)“成員”或“元素”。n每個(gè)“成員”都是一個(gè)基本數(shù)據(jù)類型或又是一個(gè)構(gòu)造類型。北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳4. 同類數(shù)據(jù)集合的描述辦法n給定一個(gè)集

24、合S = e1, e2, , en,如何用高級(jí)語(yǔ)言去描述和使用這樣的集合?n最簡(jiǎn)單的辦法n數(shù)組arrayn固定長(zhǎng)度的按順序排列的一組相同元素的集合n其它表示辦法考慮的因素n長(zhǎng)度不固定n不一定非得在內(nèi)存里挨著放北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳5. 具有許多屬性的對(duì)象描述辦法n給定現(xiàn)實(shí)世界中的一類對(duì)象Object,設(shè)其具有屬性集AS = a1, a2, , an,如何去描述這樣的對(duì)象?n如,對(duì)于人,具有姓名,出生日期,身份證號(hào),籍貫,民族等屬性,如何表示?n在各種高級(jí)語(yǔ)言中都提供了不同的表示辦法,如C語(yǔ)言中的struct, PASCAL中的record,各種面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言中的

25、class等五、數(shù)組array數(shù)組的重要意義: 以統(tǒng)一的方式描述一組數(shù)據(jù),從而為方便地對(duì)一組數(shù)據(jù)實(shí)現(xiàn)統(tǒng)一的數(shù)據(jù)處理奠定基礎(chǔ)。北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳1. 數(shù)組的概念、分類和定義n概念n數(shù)組是一種構(gòu)造類型,它是由具有同一種更基本類型的數(shù)據(jù)按順序組織在一起的有序整體。n數(shù)組中的元素通過(guò)下標(biāo)來(lái)索引。n按維數(shù)分類n一維數(shù)組n二維數(shù)組n三維數(shù)組n更高維數(shù)組北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳2. 數(shù)組的定義n一維數(shù)組定義語(yǔ)法 n ;n如nint a50; ndouble b322;nint c=1,2;n二維數(shù)組定義語(yǔ)法n MNn如nint a34;nint days

26、7=1,2,3,4,5,6,7,0,3,5,7,9,2,1;北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳3. 數(shù)組元素編號(hào)及存儲(chǔ)a0 a1a2 an-2 an-1 n每個(gè)元素的類型都相同n每個(gè)元素的類型可以任何合法的類型(基本類型、數(shù)組、指針、結(jié)構(gòu)、)n每個(gè)元素在內(nèi)存中按編號(hào)順序緊挨著連續(xù)存放C的數(shù)組元素編號(hào)規(guī)則(i = 0 n-1),首元素序號(hào)為0,依次類推順序編號(hào),i稱為下標(biāo)。北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳4. 多維數(shù)組的定義nint nArr100;nint nTwoDimArr105; 也可以看是一維數(shù)組nint nThreeDimArr356; 也可以看成是一維

27、和二維數(shù)組北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳5. 數(shù)組的基本使用規(guī)則n訪問(wèn)某個(gè)數(shù)組元素,使用下標(biāo)運(yùn)算符,優(yōu)先級(jí)最高。n運(yùn)算對(duì)象是數(shù)組名和括號(hào)里表示下標(biāo)的表達(dá)式。n一維數(shù)組使用舉例int narr10, i;i = 5; narr5 = 20; /將第5個(gè)元素置成20n二維數(shù)組使用舉例int nTwoDimArr105, i, j;i = 0;j = 2;nTwoDimArrij = 100; /將第0行第2列的元素置成100北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳6. 數(shù)組名稱與數(shù)組元素地址計(jì)算nC規(guī)定,數(shù)組的名稱代表數(shù)組的起始地址值。n若有定義: int narr10;

28、n則,narr代表整個(gè)數(shù)組的起始地址。n取數(shù)組元素的地址的方法為在數(shù)組元素前加&,如n&narri 表示取數(shù)組第i個(gè)元素的地址n對(duì)于該數(shù)組中的第i個(gè)元素,narri的地址為nnarr + i * sizeof(int)nsizeof用于獲取其中的類型或變量的大小。n即假設(shè)narr的值為1000,sizeof(int)為4n則narr3的地址1000 + 12 =1012,即表達(dá)式&narr3的值為1012。六、結(jié)構(gòu)體struct具有多個(gè)屬性的對(duì)象的描述辦法北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳1. C的結(jié)構(gòu)體及定義n結(jié)構(gòu)體n將事物或事件的不同屬性組織在一起作為

29、一個(gè)整體來(lái)對(duì)待。n結(jié)構(gòu)體是面向?qū)ο蟪绦蛟O(shè)計(jì)中的類的基礎(chǔ)。n結(jié)構(gòu)說(shuō)明由struct引導(dǎo),二種基本形式nstruct 成員說(shuō)明序列 ;nstruct tag member-list declarators;nstruct 類型標(biāo)記 成員列表 變量聲明;北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳2. 實(shí)例n校園一卡通系統(tǒng)需要描述每一個(gè)用戶的如下信息n用戶ID,姓名,身份證號(hào),性別,卡余額n其中n用戶ID為14位學(xué)號(hào)n姓名不超過(guò)10漢字n身份證號(hào)18位n性別用M和F表示男女n卡余額為雙精度浮點(diǎn)數(shù)。北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳實(shí)例結(jié)構(gòu)體說(shuō)明struct UserAccount

30、char szUserNO15; char szName20; char szID19; char cGender; double dBalance; User, Users100, *pUser;struct UserAccount char szUserNO15; /用戶ID char szName20; /姓名 char szID19; /身份證號(hào) char cGender; /性別 double dBalance; /卡余額;struct UserAccount User, Users100, *pUser;User為一個(gè)普通的結(jié)構(gòu)體變量;Users是一個(gè)長(zhǎng)度為100的結(jié)構(gòu)體數(shù)組;pU

31、ser是一個(gè)指針變量,用于存放該類型結(jié)構(gòu)體變量的所占存儲(chǔ)空間的地址;北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳實(shí)例圖示用戶ID姓名身份證號(hào)性別卡余額08120001 張帥帥110108M0.10結(jié)構(gòu)體類型結(jié)構(gòu)體實(shí)例化08120099 李美美350108F500.00struct UserAccount char szUserNO15; char szName20; char szID19; char cGender; double dBalance;struct UserAccount User, Users100, *pUser; 北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳4.

32、結(jié)構(gòu)體數(shù)組08120001081200990812000708120007 張帥帥 李美美 趙小飛 羅小花110108350108360108410108MFMF0.10500.0020.0088.20長(zhǎng)度為n的結(jié)構(gòu)體(記錄)數(shù)組,其中每個(gè)元素是一個(gè)結(jié)構(gòu)體(記錄)北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳5. 結(jié)構(gòu)體的使用規(guī)則n訪問(wèn)結(jié)構(gòu)體成員,分量運(yùn)算符.n結(jié)構(gòu)體變量.結(jié)構(gòu)體成員n例如nUser.cGender = F;nUser.dBalance += 10.2;n結(jié)構(gòu)體變量的地址等價(jià)于第一個(gè)成員的地址n結(jié)構(gòu)體指針變量用于存放結(jié)構(gòu)體的地址n對(duì)于前面的定義,若令pUser = &

33、Users5;n則pUser將保存結(jié)構(gòu)體數(shù)組中的第5個(gè)元素的地址n通過(guò)結(jié)構(gòu)體指針變量訪問(wèn)結(jié)構(gòu)體,使用-運(yùn)算符npUser-cGender = M;npUser-dBalance += 11.5;七、聯(lián)合Union北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳1. 定義nunionn形式與struct類似,但是實(shí)質(zhì)有很大的不同n提供一種若干個(gè)不同的名字共享(共用)一段存儲(chǔ)空間的手段,但是同一時(shí)刻只有能一個(gè)名字有實(shí)際意義。n如如union data int n; double x; char c;使用方法與結(jié)構(gòu)體類似,區(qū)別在于所有成員共享同一段固定長(zhǎng)度的存儲(chǔ)空間北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院

34、教師: 林友芳 成員 c 的存儲(chǔ)位置和范圍 成員 n 的存儲(chǔ)位置和范圍 聯(lián)合 union data 的表示 成員 x 的存儲(chǔ)位置和范圍 聯(lián)合變量的存儲(chǔ)實(shí)現(xiàn)n成員共用同一存儲(chǔ)位置,存儲(chǔ)區(qū)大小由大成員決成員共用同一存儲(chǔ)位置,存儲(chǔ)區(qū)大小由大成員決定。對(duì)定。對(duì)union data,n是整數(shù),是整數(shù),d是雙精度數(shù),是雙精度數(shù),c是字符。需要足以存放雙精度數(shù)的存儲(chǔ)區(qū)。成員是字符。需要足以存放雙精度數(shù)的存儲(chǔ)區(qū)。成員安排如下圖:安排如下圖:北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院 教師: 林友芳聯(lián)合變量的初始化和使用n聯(lián)合變量可以在定義時(shí)直接初始化,但這個(gè)初始聯(lián)合變量可以在定義時(shí)直接初始化,但這個(gè)初始化只能對(duì)第一個(gè)成員做?;荒軐?duì)第一個(gè)成員做。n例例union data u1 = 3, u2 = 5;n聯(lián)合變量使用形式與結(jié)構(gòu)變量相同,可整體賦值、聯(lián)合變量使用形式與結(jié)構(gòu)變量相同,可整體賦值、成員訪問(wèn)、取地址。如:成員

溫馨提示

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

評(píng)論

0/150

提交評(píng)論