




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、常量與變量第1頁,共34頁,2022年,5月20日,6點46分,星期三示例代碼3-101#include 0203int main(void) 04/* 使用printf函數輸出各種常量的值 */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點46分,星期三示例代碼3-1【運行結果】運行程序后,輸出結果如下圖所示。第3頁,共34頁,2022年,5月20日,6點46分,星期三3.1.2 變量變量,顧名思義,與常量是相對的,就是指可以改變的量。簡單地看,變量由兩部分組成:變量名和變量值。變量名是一個標識符;變量值為是一個數據值。在C語言中,便可以使用變量名來表示變量值。所謂“變量就是指可以改變的量”就是指其變量值是
3、可以改變的?!痉独?-2】演示變量的訪問和修改,實現(xiàn)方法如示例代碼3-2所示。第4頁,共34頁,2022年,5月20日,6點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點46分,星期三 【運行結
4、果】程序輸出結果如下圖所示。示例代碼3-2第6頁,共34頁,2022年,5月20日,6點46分,星期三3.2 變量的使用相對常量單一的使用方法而言,變量的使用必須依照一定的規(guī)則進行。要使用一個變量,首先要聲明和定義這個變量,然后才能使用它來表示數據。此外,還可以對變量進行多次賦值;其中,第一次賦值行為被稱為對變量的初始化。本小節(jié)將依次討論這些問題,并在最后介紹與變量緊密相關的地址操作符和指針操作符的使用。 第7頁,共34頁,2022年,5月20日,6點46分,星期三3.2.1 聲明變量聲明一個變量,實際上是以特定的格式聲明一個標識符,其作用是告訴編譯器與標識符相關聯(lián)的一些屬性。變量聲明包括數據
5、類型名和變量名兩部分,其形式如下:數據類型名 變量名【范例3-3】使用未聲明的標識符,如示例代碼3-3所示。第8頁,共34頁,2022年,5月20日,6點46分,星期三示例代碼3-301#include 0203int main(void) 04printf(data = %dn, data);/* 輸出data的值 */0506return 0;07【運行結果】編譯器在編譯時會報錯,信息如下:.3-3.c(4) : error C2065: data : undeclared identifier第9頁,共34頁,2022年,5月20日,6點46分,星期三3.2.2 定義變量變量定義的主要作
6、用,是定義語句中的標識符代表的變量分配一塊內存。其形式與變量聲明基本一致,如下所示:數據類型名 變量名;在使用變量前,必須有定義語句為變量分配內存。一般情況下,只要將變量定義語句放在使用語句之前即可。首先,由于變量的定義完成了聲明作為變量的標識符的功能,因此在變量定義語句之后便可使用該變量名;其次,變量的定義還為該變量分配了空間,因此在變量定義語句之后使用該變量才能訪問到對應的內存空間。第10頁,共34頁,2022年,5月20日,6點46分,星期三3.2.3 使用extern聲明變量從上一小節(jié)的討論知道,變量使用之前必須要先定義變量。一般情況下,都會在變量定義語句之后才使用變量;若一定要在變量
7、定義語句之前使用變量,也必須借助關鍵字extern來聲明變量。使用extern聲明變量的形式如下:extern 數據類型名 變量名;【范例3-4】使用extern語句聲明變量,如示例代碼3-4所示。第11頁,共34頁,2022年,5月20日,6點46分,星期三示例代碼3-401#include 0203int main(void) 04extern int data;/* 聲明一個變量data */05printf(data = %dn, data);/* 輸出data的值*/0607return 0;080910int data = 23;/* 定義變量data */第12頁,共34頁,20
8、22年,5月20日,6點46分,星期三示例代碼3-4【運行結果】程序運行后,得到結果如下圖所示。第13頁,共34頁,2022年,5月20日,6點46分,星期三3.2.4 賦值和初始化賦值是指為變量設定一個數值的過程。在變量的使用過程中,對函數賦值是十分頻繁的操作。對變量賦值最主要的方式是使用賦值表達式,形式如下:變量名 = 值;例如:01int a;02double b;03char c;0405a = 2;/* 給a賦值 */06b = 3.2;/* 給b賦值 */07c = c; /* 給c賦值 */第14頁,共34頁,2022年,5月20日,6點46分,星期三3.2.4 賦值和初始化大部
9、分的變量需要程序員在程序中以賦值的形式為其顯式初始化。形式如下:數據類型名 變量名 = 初始值;其中,初始值可以由程序員設定。使用初始化的方法,以上3個變量的賦值可以改寫為:01int a = 2;02double b = 3.2;03char c = c;第15頁,共34頁,2022年,5月20日,6點46分,星期三3.2.4 賦值和初始化可以在一個語句中定義多個同類型的變量,形式如下:數據類型名 變量1, 變量2, 變量3 ;例如,要定義3個int型變量可以寫為:int a, b, c;但若要在一個語句中初始化多個變量,仍需挨個為其賦值。例如:int a = 2, b = 2, c = 2
10、;若只在末尾賦值,如下所示:int a, b, c = 2;【范例3-5】展示了初始化的變量和未初始化的變量,如示例代碼3-5所示。 第16頁,共34頁,2022年,5月20日,6點46分,星期三 示例代碼3-501#include 0203int main(void) 04int x;/* 定義x但不對齊初始化 */05int y = 2;/* 定義并初始化y */0607int a, b, c = 3;/* 定義3個變量,只初始化c */08int i = 3, j = 3, k = 3;/* 定義3個變量,并全部初始化 */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點46分,星期三示例代碼3-5【運行結果】本程序編譯后有如下警告信息:.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點46分,星期三示例代碼3-5產生警告的原因是,變量a、b和c未初始化,由于這是程序有意而為的,故忽略之。在Visual Studio 2005環(huán)境下的運行程序,可得結果如下圖所示。在Visual C 6.0環(huán)境下的運行程序,結果如下圖所示。第19頁,共34頁,2022年,5月20日,6點46分,星期三3.2.5 地址操作符和指
13、針操作符變量被定義后,都會占用一塊內存,而內存都是有地址的。由于一個變量可用以表示其內存空間,因此變量內存地址也可以直接稱為變量的地址。C語言提供了地址操作符(&)來獲取變量(內存)的地址,同時還提供了指針操作符(*)來獲取某地址上的內存內容。第20頁,共34頁,2022年,5月20日,6點46分,星期三1地址操作符(&)要獲取一個變量的地址,在該變量名前加&即可,例如下圖中的變量data為例,其地址為0016。要獲取其地址值,可以使用“&data”,它的結果即為0016。此外,地址操作符只能使用變量作為操作數,不能將其用在常量前面,比如:&14&c這種用法是錯誤的。第21頁,共34頁,202
14、2年,5月20日,6點46分,星期三2指針操作符(*)要取得一個地址中的內容,可以使用指針操作符*。指針操作符的操作對象必須為地址,例如:*(&data)其中,&data是data的地址,在前加指針操作符即可獲得該地址上的存儲內容。指針操作符的使用的對象只能為變量地址。如下的用法是錯誤的:01int p = 2;02int q = &p;/* 正確,q為p的地址,但會有警告 */03int z = *q;/* 錯誤,這里的q被認為是int型,不是變量地址*/【范例3-6】展示如何使用地址操作符和指針操作符,如示例代碼3-6所示。第22頁,共34頁,2022年,5月20日,6點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點46分,星期
16、三圖3-7 地址操作符和指針操作符【運行結果】程序運行后,得到結果下圖所示。第24頁,共34頁,2022年,5月20日,6點46分,星期三3.3.1 printf函數printf函數屬于C標準庫函數,要使用這兩個函數必須包含頭文件“stdio.h”。printf函數的功能是向標準輸出打印特定的內容。調用的標準形式如下:printf(參數1, 參數2, 參數3, 參數4, );參數1為一串包含在一對引號內的字符,即字符串;參數2、參數3及其后的所有參數為要輸出的數值。為方便表述,將其形式改寫為:printf(字符串, 參數列表);范例3-7展示了printf函數對字符串和變量的處理方式?!痉独?
17、-7】展示printf函數的使用,如示例代碼3-7所示。第25頁,共34頁,2022年,5月20日,6點46分,星期三示例代碼3-701#include 0203int main(void) 04int intValue1 = 1;/* 定義第1個int型變量*/05int intValue2 = 2;/* 定義第2個int型變量*/06char charValue = s;/* 定義一個char型變量*/0708printf(intValue1 = %dn, intValue1);/* 輸出第1個變量*/09printf(intValue2 = %ddn, intValue2);/* 輸出第
18、2個變量*/10printf(charValue = %cn, charValue);/* 輸出第3個變量*/11return 0;12第26頁,共34頁,2022年,5月20日,6點46分,星期三示例代碼3-7【運行結果】程序運行后,得到結果如下圖所示。第27頁,共34頁,2022年,5月20日,6點46分,星期三3.3.2 scanf函數scanf函數也屬于C標準庫函數,使用時也必須包含頭文件“stdio.h”。scanf函數和printf函數的調用形式和處理數據的方式都十分相似。標準的調用形式如下:scanf(參數1, 參數2, 參數3, 參數4, );參數1為按照特定格式書寫的字符串;
19、其后帶一個參數列表,參數2、參數3及其后的所有參數都為用來存儲讀取的數值的空間地址。類似的,這個函數的調用形式也可以改寫為:scanf(字符串, 參數列表);【范例3-8】展示printf函數和scanf函數的使用,如示例代碼3-8所示。第28頁,共34頁,2022年,5月20日,6點46分,星期三示例代碼3-801#include 02int main(void) 03/* 定義兩個變量 */04int u = 0;05int v = 0;06printf(Th%cs is %c te%cting program%c!n, /* 為分行號 */07i, a, s, !);/* 使用printf函數輸出一個字串 */08scanf(ooo%dooo%dooo, &u, &v);/* 使用scanf函數為u和v賦值 */09 printf(u = %d, v = %d.n, u, v);/* 使用printf函數輸出u和v的值 */10 return 0;11第29頁,共34頁,2022年,5月20日,6點46分,星期三示例代碼3-8【運行結果】程序運行后,在得到如下圖第1行所示內容的結果后,輸入如該下圖第2行所示的字符串,最后可以得到結果如圖中第3行所示。第30頁,共34頁,20
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 購房合同補充協(xié)議范本
- 財務管理系統(tǒng)實施合同
- 農業(yè)訂單合同樣本
- 材料供應合同書樣本
- 度室內裝飾壁畫合同:手繪墻畫服務協(xié)議
- 農業(yè)灌溉合同轉讓協(xié)議
- 農業(yè)機械租賃合同(范本7)
- 期貨市場算法交易策略定制服務考核試卷
- 家禽飼養(yǎng)業(yè)產品質量安全追溯體系構建考核試卷
- 工業(yè)控制計算機在印刷機械控制中的實踐考核試卷
- 生物醫(yī)藥研發(fā)實驗室的安全風險評估與控制
- 合肥科技職業(yè)學院單招計算機類考試復習題庫(含答案)
- 2018-2022年北京市中考真題數學試題匯編:填空壓軸(第16題)
- 初三物理常識試卷單選題100道及答案
- 2025年吉林省吉林市事業(yè)單位招聘入伍高校畢業(yè)生54人歷年高頻重點提升(共500題)附帶答案詳解
- 《智能制造技術基礎》課件-第6章 智能制造裝備
- 鋼結構地下停車場方案
- 《上市公司治理培訓》課件
- 新人教版小學五年級數學下冊《第一單元 觀察物體(三)》2022課標大單元整體教學設計-全析
- 《光伏電站運行與維護》課件-項目五 光伏電站常見故障處理
- 2024年貴州公需科目答案
評論
0/150
提交評論