版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第3章常量與變量程序可以完成各種各樣的任務(wù),而這些任務(wù)的執(zhí)行依賴于許許多多用于含有存儲任務(wù)信息的數(shù)據(jù)。這些數(shù)據(jù)含有的信息也是執(zhí)行程序的基礎(chǔ)。在C程序中,使用常量和變量兩種形式來存儲和表示數(shù)值;為了保存各式各樣不同的數(shù)據(jù),C語言中定義了一系列的數(shù)據(jù)類型。本章將重點討論常量和變量的使用方法。通過本章的學(xué)習(xí),要重點掌握以下內(nèi)容:第3章常量與變量常量的概念和使用;變量的概念和使用;如何聲明變量;如何定義變量;printf函數(shù)和scanf函數(shù)的使用。3.1常量與變量C語言中,常量與變量都可以用來表示數(shù)據(jù)。常量的值在程序執(zhí)行過程中是不可改變的,而變量的值則是可變的。本節(jié)將介紹常量和變量的概念,并通過范例的講解來學(xué)習(xí)兩者的區(qū)別。3.1.1常量常量是指不可改變的量,C語言中的數(shù)值都可以用常量來表示。由于常量的字面值就表征了其數(shù)值大小,因此也稱為文字常量。常量可以表示各種數(shù)據(jù)類型的值,其數(shù)據(jù)類型也可以從其字面形式直接獲知。比如,‘1’就是一個常量,其值為其字面值1,而數(shù)據(jù)類型為整型。下面是幾種不同數(shù)據(jù)類型的常量的示例:234-93LL037‘\037’32e373.43‘e’下面的范例展示各種不同類型的常量的值?!痉独?-1】顯示常量的值和類型,見示例代碼3-1所示。示例代碼3-1
01 #include<stdio.h>02 03 intmain(void){04 /*使用printf函數(shù)輸出各種常量的值*/05 printf("234=%d\n",234); /*輸出234的值*/06 printf("-93=%lld\n",-93LL); /*輸出-93LL的值*/07 printf("037=%d\n",037); /*輸出037的值*/08 printf("\\037=%c\n",'\037'); /*輸出’\037’的值*/09 printf("32e3=%lf\n",32e3); /*輸出32e3的值*/10 printf("73.43=%lf\n",73.43); /*輸出73.43的值*/11 printf("'e'=%c\n",'e'); /*輸出’e’的值*/12 13 return0;14 }示例代碼3-1
【運行結(jié)果】運行程序后,輸出結(jié)果如下圖所示。3.1.2變量變量,顧名思義,與常量是相對的,就是指可以改變的量。簡單地看,變量由兩部分組成:變量名和變量值。變量名是一個標(biāo)識符;變量值為是一個數(shù)據(jù)值。在C語言中,便可以使用變量名來表示變量值。所謂“變量就是指可以改變的量”就是指其變量值是可以改變的?!痉独?-2】演示變量的訪問和修改,實現(xiàn)方法如示例代碼3-2所示。示例代碼3-201 #include<stdio.h>02 03 intmain(void){04 intdata=24; /*定義變量data*/05 06 printf("data=%d\n",data+1); /*訪問變量data*/07 data=26; /*修改變量值*/08 printf("data=%d\n",data); /*訪問變量data*/09 10 return0;11 }
【運行結(jié)果】程序輸出結(jié)果如下圖所示。示例代碼3-23.2變量的使用相對常量單一的使用方法而言,變量的使用必須依照一定的規(guī)則進(jìn)行。要使用一個變量,首先要聲明和定義這個變量,然后才能使用它來表示數(shù)據(jù)。此外,還可以對變量進(jìn)行多次賦值;其中,第一次賦值行為被稱為對變量的初始化。本小節(jié)將依次討論這些問題,并在最后介紹與變量緊密相關(guān)的地址操作符和指針操作符的使用。3.2.1聲明變量聲明一個變量,實際上是以特定的格式聲明一個標(biāo)識符,其作用是告訴編譯器與標(biāo)識符相關(guān)聯(lián)的一些屬性。變量聲明包括數(shù)據(jù)類型名和變量名兩部分,其形式如下:數(shù)據(jù)類型名變量名【范例3-3】使用未聲明的標(biāo)識符,如示例代碼3-3所示。示例代碼3-3
01 #include<stdio.h>02 03 intmain(void){04 printf("data=%d\n",data); /*輸出data的值*/05 06 return0;07 }【運行結(jié)果】編譯器在編譯時會報錯,信息如下:.\3-3.c(4):errorC2065:'data':undeclaredidentifier3.2.2定義變量變量定義的主要作用,是定義語句中的標(biāo)識符代表的變量分配一塊內(nèi)存。其形式與變量聲明基本一致,如下所示:數(shù)據(jù)類型名變量名;在使用變量前,必須有定義語句為變量分配內(nèi)存。一般情況下,只要將變量定義語句放在使用語句之前即可。首先,由于變量的定義完成了聲明作為變量的標(biāo)識符的功能,因此在變量定義語句之后便可使用該變量名;其次,變量的定義還為該變量分配了空間,因此在變量定義語句之后使用該變量才能訪問到對應(yīng)的內(nèi)存空間。3.2.3使用extern聲明變量從上一小節(jié)的討論知道,變量使用之前必須要先定義變量。一般情況下,都會在變量定義語句之后才使用變量;若一定要在變量定義語句之前使用變量,也必須借助關(guān)鍵字extern來聲明變量。使用extern聲明變量的形式如下:extern數(shù)據(jù)類型名變量名;【范例3-4】使用extern語句聲明變量,如示例代碼3-4所示。示例代碼3-4
01 #include<stdio.h>02 03 intmain(void){04 externintdata; /*聲明一個變量data*/05 printf("data=%d\n",data); /*輸出data的值*/06 07 return0;08 }09 10 intdata=23; /*定義變量data*/示例代碼3-4
【運行結(jié)果】程序運行后,得到結(jié)果如下圖所示。3.2.4賦值和初始化賦值是指為變量設(shè)定一個數(shù)值的過程。在變量的使用過程中,對函數(shù)賦值是十分頻繁的操作。對變量賦值最主要的方式是使用賦值表達(dá)式,形式如下:變量名=值;例如:01 inta;02 doubleb;03 charc;04 05 a=2; /*給a賦值*/06 b=3.2; /*給b賦值*/07 c=‘c’; /*給c賦值*/3.2.4賦值和初始化大部分的變量需要程序員在程序中以賦值的形式為其顯式初始化。形式如下:數(shù)據(jù)類型名變量名=初始值;其中,初始值可以由程序員設(shè)定。使用初始化的方法,以上3個變量的賦值可以改寫為:01 inta=2;02 doubleb=3.2;03 charc=‘c’;3.2.4賦值和初始化可以在一個語句中定義多個同類型的變量,形式如下:數(shù)據(jù)類型名變量1,變量2,變量3…;例如,要定義3個int型變量可以寫為:inta,b,c;但若要在一個語句中初始化多個變量,仍需挨個為其賦值。例如:inta=2,b=2,c=2;若只在末尾賦值,如下所示:inta,b,c=2;【范例3-5】展示了初始化的變量和未初始化的變量,如示例代碼3-5所示。
示例代碼3-501 #include<stdio.h>02 03 intmain(void){04 intx; /*定義x但不對齊初始化*/05 inty=2; /*定義并初始化y*/06 07 inta,b,c=3; /*定義3個變量,只初始化c*/08 inti=3,j=3,k=3; /*定義3個變量,并全部初始化*/09 10 printf("x=%-8dy=%-8d\n",x,y); /*輸出x和y的值*/11 printf("a=%-8db=%-8dc=%-8d\n",a,b,c); /*輸出a、b和c的值*/12 printf("i=%-8dj=%-8dk=%-8d\n",i,j,k); /*輸出i、j和k的值*/13 14 return0;15 }示例代碼3-5
示例代碼3-5
【運行結(jié)果】本程序編譯后有如下警告信息:.\3-5.c(10):warningC4700:uninitializedlocalvariable'x'used.\3-5.c(11):warningC4700:uninitializedlocalvariable'b'used.\3-5.c(11):warningC4700:uninitializedlocalvariable'a'used示例代碼3-5
產(chǎn)生警告的原因是,變量a、b和c未初始化,由于這是程序有意而為的,故忽略之。在VisualStudio2005環(huán)境下的運行程序,可得結(jié)果如下圖所示。在VisualC++6.0環(huán)境下的運行程序,結(jié)果如下圖所示。3.2.5地址操作符和指針操作符變量被定義后,都會占用一塊內(nèi)存,而內(nèi)存都是有地址的。由于一個變量可用以表示其內(nèi)存空間,因此變量內(nèi)存地址也可以直接稱為變量的地址。C語言提供了地址操作符(&)來獲取變量(內(nèi)存)的地址,同時還提供了指針操作符(*)來獲取某地址上的內(nèi)存內(nèi)容。1.地址操作符(&)要獲取一個變量的地址,在該變量名前加&即可,例如下圖中的變量data為例,其地址為0016。要獲取其地址值,可以使用“&data”,它的結(jié)果即為0016。此外,地址操作符只能使用變量作為操作數(shù),不能將其用在常量前面,比如:&14&’c’這種用法是錯誤的。2.指針操作符(*)要取得一個地址中的內(nèi)容,可以使用指針操作符*。指針操作符的操作對象必須為地址,例如:*(&data)其中,&data是data的地址,在前加指針操作符即可獲得該地址上的存儲內(nèi)容。指針操作符的使用的對象只能為變量地址。如下的用法是錯誤的:01 intp=2;02 intq=&p; /*正確,q為p的地址,但會有警告*/03 intz=*q; /*錯誤,這里的q被認(rèn)為是int型,不是變量地址*/【范例3-6】展示如何使用地址操作符和指針操作符,如示例代碼3-6所示。示例代碼3-6
01 #include<stdio.h>02 03 intmain(void){04 intkey=0; /*定義變量key*/05 06 printf("Pleaseinputainteger:");07 scanf("%d",&key); /*為key賦值*/08 printf("key\t=%d\n",key); /*輸出key的值*/09 10 printf("&key\t=%p\n",&key); /*輸出key的地址*/11 printf("*(&key)\t=%d\n",*(&key)); /*再次輸出key的值*/12
return0;13 }圖3-7地址操作符和指針操作符【運行結(jié)果】程序運行后,得到結(jié)果下圖所示。3.3格式化輸入輸出格式化輸入是指按照給定的格式從輸入設(shè)備讀取數(shù)據(jù);相應(yīng)地,格式化輸出是指按照給定的格式向輸出設(shè)備輸出字符串。C語言提供了printf函數(shù)和scanf函數(shù)來實現(xiàn)數(shù)據(jù)的格式化輸入和輸出,這兩個函數(shù)是C語言中最常用的輸入輸出函數(shù),在本小節(jié)中將簡要介紹這兩個函數(shù)的用法和特點。3.3.1printf函數(shù)printf函數(shù)屬于C標(biāo)準(zhǔn)庫函數(shù),要使用這兩個函數(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ù)對字符串和變量的處理方式?!痉独?-7】展示printf函數(shù)的使用,如示例代碼3-7所示。示例代碼3-7
01 #include<stdio.h>02 03 intmain(void){04 intintValue1=1; /*定義第1個int型變量*/05 intintValue2=2; /*定義第2個int型變量*/06 charcharValue='s'; /*定義一個char型變量*/07 08 printf("intValue1=%d\n",intValue1); /*輸出第1個變量*/09 printf("intValue2=%dd\n",intValue2); /*輸出第2個變量*/10 printf("charValue=%c\n",charValue); /*輸出第3個變量*/ 11 return0;12 }示例代碼3-7
【運行結(jié)果】程序運行后,得到結(jié)果如下圖所示。3.3.2scanf函數(shù)scanf函數(shù)也屬于C標(biāo)準(zhǔn)庫函數(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為按照特定格式書寫的字符串;其后帶一個參數(shù)列表,參數(shù)2、參數(shù)3及其后的所有參數(shù)都為用來存儲讀取的數(shù)值的空間地址。類似的,這個函數(shù)的調(diào)用形式也可以改寫為:scanf(字符串,參數(shù)列表);【范例3-8】展示printf函數(shù)和scanf函數(shù)的使用,如示例代碼3-8所示。示例代碼3-8
01 #include<stdio.h> 02 intmain(void){03 /*定義兩個變量*/04 intu=0;05 intv=0;06 printf("Th%csis%cte%ctingprogram%c!!\n",\ /*\為分行號*/07 'i','a','s','!'); /*使用printf函數(shù)輸出一個字串*/08 scanf("ooo%dooo%dooo",&u,&v); /*使用scanf函數(shù)為u和v賦值*/09 print
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【全程復(fù)習(xí)方略】2020年人教A版數(shù)學(xué)理(廣東用)課時作業(yè):第十章-第五節(jié)古-典-概-型
- 陜西省寶雞市2025屆高三上學(xué)期高考模擬檢測(一)物理試卷(含答案)
- 【高考解碼】2021屆高三生物二輪復(fù)習(xí)專題-現(xiàn)代生物科技-基因工程、細(xì)胞工程
- 【2021屆備考】2020全國名校數(shù)學(xué)試題分類解析匯編(12月第一期):E2絕對值不等式的解法
- 北京市石景山區(qū)2024-2025學(xué)年九年級上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 安徽省阜陽市阜南縣大塘中學(xué)2024~2025學(xué)年八年級上學(xué)期期末模擬測生物學(xué)試卷(含答案)
- 遼寧省撫順市省重點高中六校2025屆高三上學(xué)期期末考試 生物(含答案)
- 《倉儲經(jīng)濟效益分析》課件
- 【金版學(xué)案】2014-2021學(xué)年高中地理(人教版必修3)達(dá)標(biāo)鞏固-第三章-第二節(jié)-遙感技術(shù)的應(yīng)用
- 【師說】2022高考物理(新課標(biāo))一輪全程復(fù)習(xí)構(gòu)想檢測:課時訓(xùn)練5力的合成與分解
- 【MOOC】數(shù)學(xué)建模與創(chuàng)新實踐-西安科技大學(xué) 中國大學(xué)慕課MOOC答案
- 天冬化學(xué)成分
- 2024項目經(jīng)理講安全課
- 中國共產(chǎn)主義青年團團章
- 采購原材料年終總結(jié)
- 2024-2030年中國隧道建設(shè)行業(yè)前景展望及投資規(guī)劃分析報告
- 2024-2025學(xué)年人教版初中物理九年級全一冊期中復(fù)習(xí)(易錯60題)(解析版)
- 環(huán)保驗收課件教學(xué)課件
- 工程造價基礎(chǔ)知識課件
- 毛概學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 保安員考試模擬800題及答案
評論
0/150
提交評論