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

下載本文檔

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

文檔簡(jiǎn)介

1、第四部分常量和變量,constants,運(yùn)算與運(yùn)算對(duì)象,一、常量,1.常量的概念和分類,常量程序中直接給定值在程序運(yùn)行過程中不可以改變的量。各種常量數(shù)字常量字符常量字符串常量符號(hào)常量枚舉常量,2.回憶數(shù)字常量,數(shù)字常量表示參與計(jì)算的數(shù)值,既可以是整數(shù),也可以是帶小數(shù)的實(shí)數(shù)。整數(shù)表示方法十進(jìn)制如:90、255八進(jìn)制(以0開頭)如:0123十六進(jìn)制(以0 x開頭)如:0 x5a、0 x23ff實(shí)數(shù)表示方法整數(shù)部分或小數(shù)部分為0時(shí),可以不寫數(shù)字0,如以下表示如:0.12.23(0.23)1.454.96.(6.0)科學(xué)表示法如:0.12E35.6E-6-7.6E12單精度實(shí)數(shù)表示如:4.5f6.3F

2、0.123E3f5.6E-6F,實(shí)數(shù)類型默認(rèn)為雙精度實(shí)數(shù),2.回憶字符常量,定義用一對(duì)單引號(hào)知起來的單個(gè)字符字符分類可見字符如:字母、數(shù)字、標(biāo)點(diǎn)等。不可見字符如:控制光標(biāo)移動(dòng)、使終端發(fā)出振鈴聲音的各類字符。表示如:0znt,換行符,橫向制表符(Tab),字符換碼序列,換碼序列含義換碼序列含義a響鈴符v縱向制表符b退格符反斜線f換頁符?問號(hào)n換行符單引號(hào)r回車符”雙引號(hào)t橫向制表符,3.回憶字符串常量,定義用一對(duì)雙引號(hào)(“)引起來的0個(gè)或多個(gè)連續(xù)的字符,但不包括雙引號(hào)。當(dāng)字符串中包含雙引號(hào)時(shí),需要用”來表示。舉例“Thisisastringn”“”isadoublequote”在計(jì)算機(jī)中存儲(chǔ)時(shí)以

3、空字符0結(jié)束,但在字符串常量中不需要直接表示這個(gè)空字符。,字符串中可以包含換行符,表示雙引號(hào),4.符號(hào)常量,符號(hào)常量:用符號(hào)代表一定的常量符號(hào)可以是任意的合法標(biāo)識(shí)符,但習(xí)慣使用大寫字母和下劃線組成的標(biāo)識(shí)符。用宏命令#define定義符號(hào)常量#definePI3可以定義常量表達(dá)式#defineTIMES(NUM/4)優(yōu)點(diǎn)有助于提高程序的可讀性便于記憶和使用有助于發(fā)現(xiàn)和減少程序中的錯(cuò)誤提高程序的可維護(hù)性,最好根據(jù)常量的用途和含義對(duì)常量命名,是一個(gè)編譯預(yù)處理命令,它所定義的符號(hào)常量在預(yù)編譯階段被替換為對(duì)應(yīng)的字符串。,必須是已定義過的符號(hào)常量,例,/計(jì)算并輸出半徑為2.5米的

4、圓的面積#definePI3ain()printf(“Area=”,PI*2.5*2.5);return0;,5.枚舉常量,定義枚舉常量是一種用符號(hào)表示的整型數(shù)字常量,且有標(biāo)識(shí)符表示。使用關(guān)鍵字enum定義enumA,B,C,D,E=50,F,G,H,I;enumJAN=1,FEB,MAR,APR,MAY,JUN,JLY,AUG,SEP,OCT,NOV,DEC;如果枚舉常量后面給定了值,則以給定值作為枚舉符對(duì)應(yīng)的常量值。當(dāng)枚舉符后面沒有給定值,只是一個(gè)標(biāo)識(shí)符時(shí),該枚舉常量的值等于其前面枚舉常量的值加1。如果該枚舉常量是一個(gè)標(biāo)識(shí)符時(shí)且沒有給定值,該枚舉常量的值等于0。,

5、枚舉量與符號(hào)常量的意義,用文字符號(hào)的形式表示常量有利于更好地理解程序意義。例如,程序里兩個(gè)0可能會(huì)代表不同意義,它們?cè)跀?shù)值形式上沒有任何區(qū)分。但是,采用符號(hào)常量可提高可讀性,便于理解。高級(jí)語言提供了用符號(hào)表示常量的辦法,在程序中統(tǒng)一使用。好處使程序更容易修改和閱讀,二、變量及其屬性,1.變量概念、定義和使用,變量程序運(yùn)行過程中可以發(fā)生變化的量存儲(chǔ)數(shù)據(jù)的命名對(duì)象(變量名)變量名是標(biāo)識(shí)符。使我們可能通過一個(gè)名字來使用存儲(chǔ)單元變量的特點(diǎn)變量能保存值,不會(huì)丟失。給某變量名是標(biāo)識(shí)符。變量的值可以變化變量賦一個(gè)值之后,每次使用它總得到這個(gè)值,直到下次賦值。對(duì)變量基本操作賦值(寫)取值(讀),注意:要遵循命

6、名規(guī)范,2.變量的類型和定義,變量有固定的類型,只能保存這個(gè)類型的值。整型變量(保存int值的變量)雙精度變量(保存double值)字符變量,變量定義變量必須先定義后使用需要給出變量名和類型。例intm;doublex;可以同時(shí)定義多個(gè)同類型的變量intk,n,sum,count;longdoubley,z;,為什么要給出類型?不給行不行?有不給的嗎?能定義一種變量存什么數(shù)據(jù)都行嗎?,3.變量的命名,關(guān)鍵字不能當(dāng)做變量名變量的命名最好能反映變量的實(shí)際含義一些行業(yè)規(guī)范里,變量命名一般還應(yīng)反應(yīng)變量的類型,有些變量命名還要反應(yīng)變量的地位(如類屬性、全局變量)變量命名要求參見編碼規(guī)范,4.復(fù)合結(jié)構(gòu)內(nèi)的

7、局部變量,復(fù)合結(jié)構(gòu)中可以定義局部變量,在內(nèi)部使用變量定義應(yīng)出現(xiàn)在所有語句之前變量定義序列語句序列有些C+沒有這個(gè)要求一個(gè)復(fù)合結(jié)構(gòu)里不能定義多個(gè)同名的變量。,5.變量的取值與賦值,取值:計(jì)算中遇到變量,取其值參與計(jì)算x+sin(3.2*y)-pow(x,2)賦值用賦值運(yùn)算符(=,賦值號(hào))表示賦值語法Variable=Expression/賦值表達(dá)式x=5.0左邊是賦值目標(biāo),右邊是提供值的表達(dá)式賦值運(yùn)算的主要效果是把表達(dá)式的值賦給左邊變量賦值運(yùn)算符優(yōu)先級(jí)很低。例x=2+3*y,賦值語句,賦值語句Variable=Expression;最基本的語句,完成程序里最重要的操作程序中一般用賦值語句描述賦值

8、動(dòng)作例重寫由三邊求三角形面積的程序計(jì)算中多次用半周長(zhǎng),定義變量保存這個(gè)值,可避免重復(fù)計(jì)算。,變量的最主要用途:保存計(jì)算的中間結(jié)果,#include#includeintmain()doubles;s=(3.+5.+7.)/2.;printf(Area:%fn,sqrt(s*(s-3.)*(s-5.)*(s-7.);return0;,用于保存中間結(jié)果,賦值運(yùn)算符的值與結(jié)合性,Variable=Expression整體上被稱為賦值表達(dá)式賦值表達(dá)式也有值,就是右邊表達(dá)式的值。賦值表達(dá)式的值通常不用,但賦值表達(dá)式的值也可以用,例y=(x=5)+8;有時(shí)可以用同一表達(dá)式為多個(gè)變量賦值。y=(z=(x=1

9、.0);賦值運(yùn)算符的結(jié)合律從右向左結(jié)合,y=z=x=1.0;,簡(jiǎn)化,賦值與類型,給定賦值表達(dá)式Variable=Expression左邊變量和右邊的表達(dá)值都有類型規(guī)定若表達(dá)式值與被賦值變量類型不同,該值先轉(zhuǎn)換到變量類型的值,然后賦值。在前面程序例子里把賦值語句改寫成:s=(3+5+7)/2;運(yùn)行時(shí)發(fā)現(xiàn)程序的結(jié)果不對(duì),為什么?,6.變量初始化,定義變量時(shí)指定變量的初始值??捎脭?shù)值或者數(shù)值表達(dá)式為的變量做初始化,如doubles=(3+5+7)/2.0;longdoublex=4.5L,y=3.24L;初始化只能一次對(duì)一個(gè)變量做,7.從鍵盤輸入數(shù)據(jù)到變量,請(qǐng)查閱并預(yù)習(xí)scanf語句的功能與用法例#

10、include“stdio.h”main()intn;scanf(“%d”,%d表示輸入整數(shù),請(qǐng)先自學(xué)%c,%s,%lf,%f的含義,“x=x+1”在數(shù)學(xué)里為矛盾。C語言中判斷兩個(gè)值是否相等,用運(yùn)算符=一定注意不要寫成一個(gè)等號(hào),9.值的計(jì)算順序問題,下面是合法語句x=2.0;y=(x=3.0)+x;問題:執(zhí)行后y的值是什么?這個(gè)問題沒有明確答案,因?yàn)榈诙€(gè)語句沒有語法錯(cuò)誤,但是定義不明確。原因C語言未規(guī)定加法對(duì)兩個(gè)運(yùn)算對(duì)象的求值順序,這種表達(dá)式的結(jié)果沒有定義。,dValue,35.7,變量,double,類型,名字,變量的存儲(chǔ)單元地址:0 x00002f30,10.變量的屬性圖示,規(guī)定存儲(chǔ)的長(zhǎng)

11、度和格式,doubledValue=35.7;,三、指針變量簡(jiǎn)介,從信件投遞、找人、找地方到找存儲(chǔ)空間,保存存儲(chǔ)空間地址的方法指針變量簡(jiǎn)介,1.找到目的地的辦法,某宿舍,宿舍號(hào),某辦公室,通信地址,同學(xué)或快遞根據(jù)宿舍號(hào)找到宿舍,快遞或郵局根據(jù)通信地址投遞,北京交大,我校地址,根據(jù)地址找到學(xué)校,網(wǎng)站地址,網(wǎng)站,通知書上網(wǎng)站上腦子里,信封上,信封上或腦子里,搜索結(jié)果上腦子里手冊(cè)上,目的地,地址,地址保存處,根據(jù)地址找到網(wǎng)站,2.回憶數(shù)據(jù)與存儲(chǔ)空間,存儲(chǔ)空間:以字節(jié)為單位編號(hào),普通字符型變量占8位,A,一個(gè)32位int占用的存儲(chǔ)空間,一個(gè)float型浮點(diǎn)數(shù)所需占用的存儲(chǔ)空間,0 x00000000,

12、0 xFFFFFFFF,存儲(chǔ)空間的編號(hào)稱為地址,0 x00000001,0 x00000002,3.存儲(chǔ)空間地址之用處與獲取,存儲(chǔ)空間地址用處知道了地址就可能可以訪問存儲(chǔ)空間:往其中存數(shù)據(jù);使用其中保存的數(shù)據(jù)存儲(chǔ)空間地址獲取途徑用則double*pDouble;char*pChar;,7.指針變量的常見用法示例,示例1intn;int*pInt;pInt=/使pInt中保存數(shù)據(jù)的起始地址,8.間接運(yùn)算符*,指針的間接運(yùn)算符:*如給定表達(dá)式*pInt,表示先取指針變量pInt中所存的地址值addr,然后再將addr所處的整型存儲(chǔ)空間中的值取出來作為表達(dá)式的值。如intn=100,m,*p;p=/

13、m的值將為101,0X0012FF70,100,0X0012FF70,0X0012FF68,p,n,101,0X0012FF6C,m,9.指針變量與存儲(chǔ)單元關(guān)系圖示,0X0012FF78,指針變量p1,55,0X0012FF78,每格代表4個(gè)字節(jié),int*p1;intn=55;int*p2;intm=10;p1=,0X0012FF70,0X0012FF74,0X0012FF78,0X0012FF7C,m,p1,p2,n,*p1的值為55,*p2的值為10,問,執(zhí)行*p1=100;會(huì)產(chǎn)生什么影響?,10.指針變量的類型,指針變量中保存的某種類型存儲(chǔ)空間的地址存儲(chǔ)單元的地址值是有類型的,如存儲(chǔ)in

14、t值的存儲(chǔ)單元的地址的類型是int*存儲(chǔ)double值的存儲(chǔ)單元的地址的類型是double*存儲(chǔ)char值的存儲(chǔ)單元的地址的類型是char*不同類型值存儲(chǔ)單元的地址值屬于不同的類型int*和char*屬于不同的類型double*和int*屬于不同的類型short*和long*屬于不同的類型地址值類型的不同意味著不能將類型不同的地址值賦給基類型不同的指針變量。,四、構(gòu)造數(shù)據(jù)類型,ConstructedDataTypes簡(jiǎn)單數(shù)據(jù)類型復(fù)雜數(shù)據(jù)類型,1.復(fù)雜數(shù)據(jù)類型描述的需求,如何描述一組類型相同的數(shù)據(jù)?如何描述圖片?如何描述游戲中對(duì)象,如武器、戰(zhàn)場(chǎng)?如何描述一個(gè)身份證?如何描述學(xué)籍管理系統(tǒng)中的學(xué)生?

15、如何描述地圖?如何描述一個(gè)圍棋棋盤?如何描述搜索引擎的搜索結(jié)果?,2.復(fù)雜數(shù)據(jù)類型的特點(diǎn),數(shù)據(jù)不是孤立的,都相關(guān)聯(lián)的,數(shù)據(jù)之間具有關(guān)系一個(gè)對(duì)象可能具有一組類型相同的數(shù)據(jù)一個(gè)對(duì)象可能具有許多不同的屬性例給定一組關(guān)鍵詞,可以在搜索引擎上搜索到很多搜索結(jié)果一個(gè)自然人具有許多不同的屬性一個(gè)班級(jí)里具有許多學(xué)生一個(gè)課堂上既有教師也有學(xué)生,3.構(gòu)造數(shù)據(jù)類型,構(gòu)造數(shù)據(jù)類型根據(jù)已定義的一個(gè)或多個(gè)數(shù)據(jù)類型用構(gòu)造的方法來定義新的數(shù)據(jù)類型。也就是說,一個(gè)構(gòu)造類型的值可以分解成若干個(gè)“成員”或“元素”。每個(gè)“成員”都是一個(gè)基本數(shù)據(jù)類型或又是一個(gè)構(gòu)造類型。,4.同類數(shù)據(jù)集合的描述辦法,給定一個(gè)集合S=e1,e2,en,如

16、何用高級(jí)語言去描述和使用這樣的集合?最簡(jiǎn)單的辦法數(shù)組array固定長(zhǎng)度的按順序排列的一組相同元素的集合其它表示辦法考慮的因素長(zhǎng)度不固定不一定非得在內(nèi)存里挨著放,5.具有許多屬性的對(duì)象描述辦法,給定現(xiàn)實(shí)世界中的一類對(duì)象Object,設(shè)其具有屬性集AS=a1,a2,an,如何去描述這樣的對(duì)象?如,對(duì)于人,具有姓名,出生日期,身份證號(hào),籍貫,民族等屬性,如何表示?在各種高級(jí)語言中都提供了不同的表示辦法,如C語言中的struct,PASCAL中的record,各種面向?qū)ο蟪绦蛟O(shè)計(jì)語言中的class等,五、數(shù)組array,數(shù)組的重要意義:以統(tǒng)一的方式描述一組數(shù)據(jù),從而為方便地對(duì)一組數(shù)據(jù)實(shí)現(xiàn)統(tǒng)一的數(shù)據(jù)處理

17、奠定基礎(chǔ)。,1.數(shù)組的概念、分類和定義,概念數(shù)組是一種構(gòu)造類型,它是由具有同一種更基本類型的數(shù)據(jù)按順序組織在一起的有序整體。數(shù)組中的元素通過下標(biāo)來索引。按維數(shù)分類一維數(shù)組二維數(shù)組三維數(shù)組更高維數(shù)組,2.數(shù)組的定義,一維數(shù)組定義語法;如inta50;doubleb322;intc=1,2;二維數(shù)組定義語法MN如inta34;intdays7=1,2,3,4,5,6,7,0,3,5,7,9,2,1;,3.數(shù)組元素編號(hào)及存儲(chǔ),a0a1a2an-2an-1,每個(gè)元素的類型都相同每個(gè)元素的類型可以任何合法的類型(基本類型、數(shù)組、指針、結(jié)構(gòu)、)每個(gè)元素在內(nèi)存中按編號(hào)順序緊挨著連續(xù)存放,C的數(shù)組元素編號(hào)規(guī)則

18、(i=0n-1),首元素序號(hào)為0,依次類推順序編號(hào),i稱為下標(biāo)。,4.多維數(shù)組的定義,intnArr100;intnTwoDimArr105;也可以看是一維數(shù)組intnThreeDimArr356;也可以看成是一維和二維數(shù)組,5.數(shù)組的基本使用規(guī)則,訪問某個(gè)數(shù)組元素,使用下標(biāo)運(yùn)算符,優(yōu)先級(jí)最高。運(yùn)算對(duì)象是數(shù)組名和括號(hào)里表示下標(biāo)的表達(dá)式。一維數(shù)組使用舉例intnarr10,i;i=5;narr5=20;/將第5個(gè)元素置成20二維數(shù)組使用舉例intnTwoDimArr105,i,j;i=0;j=2;nTwoDimArrij=100;/將第0行第2列的元素置成100,6.數(shù)組名稱與數(shù)組元素地址計(jì)算,

19、C規(guī)定,數(shù)組的名稱代表數(shù)組的起始地址值。若有定義:intnarr10;則,narr代表整個(gè)數(shù)組的起始地址。取數(shù)組元素的地址的方法為在數(shù)組元素前加structtagmember-listdeclarators;struct類型標(biāo)記成員列表變量聲明;,2.實(shí)例,校園一卡通系統(tǒng)需要描述每一個(gè)用戶的如下信息用戶ID,姓名,身份證號(hào),性別,卡余額其中用戶ID為14位學(xué)號(hào)姓名不超過10漢字身份證號(hào)18位性別用M和F表示男女卡余額為雙精度浮點(diǎn)數(shù)。,實(shí)例結(jié)構(gòu)體說明,structUserAccountcharszUserNO15;charszName20;charszID19;charcGender;doubl

20、edBalance;User,Users100,*pUser;,structUserAccountcharszUserNO15;/用戶IDcharszName20;/姓名charszID19;/身份證號(hào)charcGender;/性別doubledBalance;/卡余額;structUserAccountUser,Users100,*pUser;,User為一個(gè)普通的結(jié)構(gòu)體變量;Users是一個(gè)長(zhǎng)度為100的結(jié)構(gòu)體數(shù)組;pUser是一個(gè)指針變量,用于存放該類型結(jié)構(gòu)體變量的所占存儲(chǔ)空間的地址;,實(shí)例圖示,結(jié)構(gòu)體類型,結(jié)構(gòu)體,實(shí)例化,structUserAccountcharszUserNO15;

21、charszName20;charszID19;charcGender;doubledBalance;structUserAccountUser,Users100,*pUser;,4.結(jié)構(gòu)體數(shù)組,長(zhǎng)度為n的結(jié)構(gòu)體(記錄)數(shù)組,其中每個(gè)元素是一個(gè)結(jié)構(gòu)體(記錄),5.結(jié)構(gòu)體的使用規(guī)則,訪問結(jié)構(gòu)體成員,分量運(yùn)算符.結(jié)構(gòu)體變量.結(jié)構(gòu)體成員例如User.cGender=F;User.dBalance+=10.2;結(jié)構(gòu)體變量的地址等價(jià)于第一個(gè)成員的地址結(jié)構(gòu)體指針變量用于存放結(jié)構(gòu)體的地址對(duì)于前面的定義,若令pUser=,七、聯(lián)合Union,1.定義,union形式與struct類似,但是實(shí)質(zhì)有很大的不同提供一種若干個(gè)不同的名字共享(共用)一段存儲(chǔ)空間的手段,但是同一時(shí)刻只有能一個(gè)名字有實(shí)際意義。如uniondataintn;doublex;charc;,使用方法與結(jié)構(gòu)體類似,區(qū)別在于所有成員共享同一段固定長(zhǎng)度的存儲(chǔ)空間,聯(lián)合變量的存儲(chǔ)實(shí)現(xiàn),成員共用同一存儲(chǔ)位置,存儲(chǔ)區(qū)大小由大成員決定。對(duì)uniondata,n是整數(shù),d是雙精度數(shù),c是字符。需要足以存放雙精度數(shù)的存儲(chǔ)區(qū)。成員安排如下圖:,聯(lián)合變量的初始化和使用,聯(lián)合變量可以在定義時(shí)直接初

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論