常量與變量精品課件_第1頁
常量與變量精品課件_第2頁
常量與變量精品課件_第3頁
常量與變量精品課件_第4頁
常量與變量精品課件_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、常量與變量第1頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三示例代碼3-101#include 0203int main(void) 04/* 使用printf函數(shù)輸出各種常量的值 */05printf(234 = %dn, 234);/* 輸出234的值 */06printf(-93 = %lldn, -93LL);/* 輸出-93LL的值 */07printf(037 = %dn, 037);/* 輸出037的值 */08printf(037 = %cn, 037);/* 輸出037的值 */09printf(32e3 = %lfn, 32e3);/* 輸出32e3的值 */10

2、printf(73.43 = %lfn, 73.43);/* 輸出73.43的值 */11printf(e = %cn, e);/* 輸出e的值 */1213return 0;14第2頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三示例代碼3-1【運(yùn)行結(jié)果】運(yùn)行程序后,輸出結(jié)果如下圖所示。第3頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三3.1.2 變量變量,顧名思義,與常量是相對的,就是指可以改變的量。簡單地看,變量由兩部分組成:變量名和變量值。變量名是一個(gè)標(biāo)識符;變量值為是一個(gè)數(shù)據(jù)值。在C語言中,便可以使用變量名來表示變量值。所謂“變量就是指可以改變的量”就是指其變量值是

3、可以改變的?!痉独?-2】演示變量的訪問和修改,實(shí)現(xiàn)方法如示例代碼3-2所示。第4頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三示例代碼3-201#include 0203int main(void) 04int data = 24; /* 定義變量data */0506printf(data = %dn, data + 1);/* 訪問變量data */07data = 26; /* 修改變量值 */08printf(data = %dn, data); /* 訪問變量data */0910return 0;11第5頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三 【運(yùn)行結(jié)

4、果】程序輸出結(jié)果如下圖所示。示例代碼3-2第6頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三3.2 變量的使用相對常量單一的使用方法而言,變量的使用必須依照一定的規(guī)則進(jìn)行。要使用一個(gè)變量,首先要聲明和定義這個(gè)變量,然后才能使用它來表示數(shù)據(jù)。此外,還可以對變量進(jìn)行多次賦值;其中,第一次賦值行為被稱為對變量的初始化。本小節(jié)將依次討論這些問題,并在最后介紹與變量緊密相關(guān)的地址操作符和指針操作符的使用。 第7頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三3.2.1 聲明變量聲明一個(gè)變量,實(shí)際上是以特定的格式聲明一個(gè)標(biāo)識符,其作用是告訴編譯器與標(biāo)識符相關(guān)聯(lián)的一些屬性。變量聲明包括數(shù)據(jù)

5、類型名和變量名兩部分,其形式如下:數(shù)據(jù)類型名 變量名【范例3-3】使用未聲明的標(biāo)識符,如示例代碼3-3所示。第8頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三示例代碼3-301#include 0203int main(void) 04printf(data = %dn, data);/* 輸出data的值 */0506return 0;07【運(yùn)行結(jié)果】編譯器在編譯時(shí)會(huì)報(bào)錯(cuò),信息如下:.3-3.c(4) : error C2065: data : undeclared identifier第9頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三3.2.2 定義變量變量定義的主要作

6、用,是定義語句中的標(biāo)識符代表的變量分配一塊內(nèi)存。其形式與變量聲明基本一致,如下所示:數(shù)據(jù)類型名 變量名;在使用變量前,必須有定義語句為變量分配內(nèi)存。一般情況下,只要將變量定義語句放在使用語句之前即可。首先,由于變量的定義完成了聲明作為變量的標(biāo)識符的功能,因此在變量定義語句之后便可使用該變量名;其次,變量的定義還為該變量分配了空間,因此在變量定義語句之后使用該變量才能訪問到對應(yīng)的內(nèi)存空間。第10頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三3.2.3 使用extern聲明變量從上一小節(jié)的討論知道,變量使用之前必須要先定義變量。一般情況下,都會(huì)在變量定義語句之后才使用變量;若一定要在變量

7、定義語句之前使用變量,也必須借助關(guān)鍵字extern來聲明變量。使用extern聲明變量的形式如下:extern 數(shù)據(jù)類型名 變量名;【范例3-4】使用extern語句聲明變量,如示例代碼3-4所示。第11頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三示例代碼3-401#include 0203int main(void) 04extern int data;/* 聲明一個(gè)變量data */05printf(data = %dn, data);/* 輸出data的值*/0607return 0;080910int data = 23;/* 定義變量data */第12頁,共34頁,20

8、22年,5月20日,6點(diǎn)46分,星期三示例代碼3-4【運(yùn)行結(jié)果】程序運(yùn)行后,得到結(jié)果如下圖所示。第13頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三3.2.4 賦值和初始化賦值是指為變量設(shè)定一個(gè)數(shù)值的過程。在變量的使用過程中,對函數(shù)賦值是十分頻繁的操作。對變量賦值最主要的方式是使用賦值表達(dá)式,形式如下:變量名 = 值;例如:01int a;02double b;03char c;0405a = 2;/* 給a賦值 */06b = 3.2;/* 給b賦值 */07c = c; /* 給c賦值 */第14頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三3.2.4 賦值和初始化大部

9、分的變量需要程序員在程序中以賦值的形式為其顯式初始化。形式如下:數(shù)據(jù)類型名 變量名 = 初始值;其中,初始值可以由程序員設(shè)定。使用初始化的方法,以上3個(gè)變量的賦值可以改寫為:01int a = 2;02double b = 3.2;03char c = c;第15頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三3.2.4 賦值和初始化可以在一個(gè)語句中定義多個(gè)同類型的變量,形式如下:數(shù)據(jù)類型名 變量1, 變量2, 變量3 ;例如,要定義3個(gè)int型變量可以寫為:int a, b, c;但若要在一個(gè)語句中初始化多個(gè)變量,仍需挨個(gè)為其賦值。例如:int a = 2, b = 2, c = 2

10、;若只在末尾賦值,如下所示:int a, b, c = 2;【范例3-5】展示了初始化的變量和未初始化的變量,如示例代碼3-5所示。 第16頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三 示例代碼3-501#include 0203int main(void) 04int x;/* 定義x但不對齊初始化 */05int y = 2;/* 定義并初始化y */0607int a, b, c = 3;/* 定義3個(gè)變量,只初始化c */08int i = 3, j = 3, k = 3;/* 定義3個(gè)變量,并全部初始化 */0910printf(x = %-8d y = %-8dn, x

11、, y); /* 輸出x和y的值 */11printf(a = %-8d b = %-8d c = %-8dn, a, b, c);/* 輸出a、b和c的值 */12printf(i = %-8d j = %-8d k = %-8dn, i, j, k);/* 輸出i、j和k的值 */1314return 0;15示例代碼3-5第17頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三示例代碼3-5【運(yùn)行結(jié)果】本程序編譯后有如下警告信息:.3-5.c(10) : warning C4700: uninitialized local variable x used.3-5.c(11) : w

12、arning C4700: uninitialized local variable b used.3-5.c(11) : warning C4700: uninitialized local variable a used第18頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三示例代碼3-5產(chǎn)生警告的原因是,變量a、b和c未初始化,由于這是程序有意而為的,故忽略之。在Visual Studio 2005環(huán)境下的運(yùn)行程序,可得結(jié)果如下圖所示。在Visual C 6.0環(huán)境下的運(yùn)行程序,結(jié)果如下圖所示。第19頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三3.2.5 地址操作符和指

13、針操作符變量被定義后,都會(huì)占用一塊內(nèi)存,而內(nèi)存都是有地址的。由于一個(gè)變量可用以表示其內(nèi)存空間,因此變量內(nèi)存地址也可以直接稱為變量的地址。C語言提供了地址操作符(&)來獲取變量(內(nèi)存)的地址,同時(shí)還提供了指針操作符(*)來獲取某地址上的內(nèi)存內(nèi)容。第20頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三1地址操作符(&)要獲取一個(gè)變量的地址,在該變量名前加&即可,例如下圖中的變量data為例,其地址為0016。要獲取其地址值,可以使用“&data”,它的結(jié)果即為0016。此外,地址操作符只能使用變量作為操作數(shù),不能將其用在常量前面,比如:&14&c這種用法是錯(cuò)誤的。第21頁,共34頁,202

14、2年,5月20日,6點(diǎn)46分,星期三2指針操作符(*)要取得一個(gè)地址中的內(nèi)容,可以使用指針操作符*。指針操作符的操作對象必須為地址,例如:*(&data)其中,&data是data的地址,在前加指針操作符即可獲得該地址上的存儲(chǔ)內(nèi)容。指針操作符的使用的對象只能為變量地址。如下的用法是錯(cuò)誤的:01int p = 2;02int q = &p;/* 正確,q為p的地址,但會(huì)有警告 */03int z = *q;/* 錯(cuò)誤,這里的q被認(rèn)為是int型,不是變量地址*/【范例3-6】展示如何使用地址操作符和指針操作符,如示例代碼3-6所示。第22頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三示例

15、代碼3-601#include 0203int main(void) 04int key = 0;/* 定義變量key */0506printf(Please input a integer:);07scanf(%d, &key);/* 為key賦值 */08printf(keyt= %dn, key);/* 輸出key的值 */0910printf(&keyt= %pn, &key);/* 輸出key的地址 */11printf(*(&key)t= %dn, *(&key);/* 再次輸出key的值 */12 return 0;13第23頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期

16、三圖3-7 地址操作符和指針操作符【運(yùn)行結(jié)果】程序運(yùn)行后,得到結(jié)果下圖所示。第24頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三3.3.1 printf函數(shù)printf函數(shù)屬于C標(biāo)準(zhǔn)庫函數(shù),要使用這兩個(gè)函數(shù)必須包含頭文件“stdio.h”。printf函數(shù)的功能是向標(biāo)準(zhǔn)輸出打印特定的內(nèi)容。調(diào)用的標(biāo)準(zhǔn)形式如下:printf(參數(shù)1, 參數(shù)2, 參數(shù)3, 參數(shù)4, );參數(shù)1為一串包含在一對引號內(nèi)的字符,即字符串;參數(shù)2、參數(shù)3及其后的所有參數(shù)為要輸出的數(shù)值。為方便表述,將其形式改寫為:printf(字符串, 參數(shù)列表);范例3-7展示了printf函數(shù)對字符串和變量的處理方式。【范例3

17、-7】展示printf函數(shù)的使用,如示例代碼3-7所示。第25頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三示例代碼3-701#include 0203int main(void) 04int intValue1 = 1;/* 定義第1個(gè)int型變量*/05int intValue2 = 2;/* 定義第2個(gè)int型變量*/06char charValue = s;/* 定義一個(gè)char型變量*/0708printf(intValue1 = %dn, intValue1);/* 輸出第1個(gè)變量*/09printf(intValue2 = %ddn, intValue2);/* 輸出第

18、2個(gè)變量*/10printf(charValue = %cn, charValue);/* 輸出第3個(gè)變量*/11return 0;12第26頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三示例代碼3-7【運(yùn)行結(jié)果】程序運(yùn)行后,得到結(jié)果如下圖所示。第27頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三3.3.2 scanf函數(shù)scanf函數(shù)也屬于C標(biāo)準(zhǔn)庫函數(shù),使用時(shí)也必須包含頭文件“stdio.h”。scanf函數(shù)和printf函數(shù)的調(diào)用形式和處理數(shù)據(jù)的方式都十分相似。標(biāo)準(zhǔn)的調(diào)用形式如下:scanf(參數(shù)1, 參數(shù)2, 參數(shù)3, 參數(shù)4, );參數(shù)1為按照特定格式書寫的字符串;

19、其后帶一個(gè)參數(shù)列表,參數(shù)2、參數(shù)3及其后的所有參數(shù)都為用來存儲(chǔ)讀取的數(shù)值的空間地址。類似的,這個(gè)函數(shù)的調(diào)用形式也可以改寫為:scanf(字符串, 參數(shù)列表);【范例3-8】展示printf函數(shù)和scanf函數(shù)的使用,如示例代碼3-8所示。第28頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三示例代碼3-801#include 02int main(void) 03/* 定義兩個(gè)變量 */04int u = 0;05int v = 0;06printf(Th%cs is %c te%cting program%c!n, /* 為分行號 */07i, a, s, !);/* 使用printf函數(shù)輸出一個(gè)字串 */08scanf(ooo%dooo%dooo, &u, &v);/* 使用scanf函數(shù)為u和v賦值 */09 printf(u = %d, v = %d.n, u, v);/* 使用printf函數(shù)輸出u和v的值 */10 return 0;11第29頁,共34頁,2022年,5月20日,6點(diǎn)46分,星期三示例代碼3-8【運(yùn)行結(jié)果】程序運(yùn)行后,在得到如下圖第1行所示內(nèi)容的結(jié)果后,輸入如該下圖第2行所示的字符串,最后可以得到結(jié)果如圖中第3行所示。第30頁,共34頁,20

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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

提交評論