




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、聯(lián)系方式:http:/北京源智天下科技有限公司第第3 3章章 常量與變量常量與變量程序可以完成各種各樣的任務,而這些任務的執(zhí)行依賴于許程序可以完成各種各樣的任務,而這些任務的執(zhí)行依賴于許許多多用于含有存儲任務信息的數據。這些數據含有的許多多用于含有存儲任務信息的數據。這些數據含有的信息也是執(zhí)行程序的基礎。在信息也是執(zhí)行程序的基礎。在C程序中,使用常量和變量程序中,使用常量和變量兩種形式來存儲和表示數值;為了保存各式各樣不同的兩種形式來存儲和表示數值;為了保存各式各樣不同的數據,數據,C語言中定義了一系列的數據類型。本章將重點討語言中定義了一系列的數據類型。本章將重點討論常量和變量的使用方法。通
2、過本章的學習,要重點掌論常量和變量的使用方法。通過本章的學習,要重點掌握以下內容:握以下內容:聯(lián)系方式:http:/北京源智天下科技有限公司第第3 3章章 常量與變量常量與變量常量的概念和使用;常量的概念和使用;變量的概念和使用;變量的概念和使用;如何聲明變量;如何聲明變量;如何定義變量;如何定義變量;printf函數和函數和scanf函數的使用。函數的使用。聯(lián)系方式:http:/北京源智天下科技有限公司3.1 3.1 常量與變量常量與變量C語言中,常量與變量都可以用來表示數據。常量的值在程語言中,常量與變量都可以用來表示數據。常量的值在程序執(zhí)行過程中是不可改變的,而變量的值則是可變的。序執(zhí)行
3、過程中是不可改變的,而變量的值則是可變的。本節(jié)將介紹常量和變量的概念,并通過范例的講解來學本節(jié)將介紹常量和變量的概念,并通過范例的講解來學習兩者的區(qū)別。習兩者的區(qū)別。聯(lián)系方式:http:/北京源智天下科技有限公司3.1.1 3.1.1 常量常量常量是指不可改變的量,常量是指不可改變的量,C語言中的數值都可以用常量來表語言中的數值都可以用常量來表示。由于常量的字面值就表征了其數值大小,因此也稱示。由于常量的字面值就表征了其數值大小,因此也稱為文字常量。常量可以表示各種數據類型的值,其數據為文字常量。常量可以表示各種數據類型的值,其數據類型也可以從其字面形式直接獲知。比如,類型也可以從其字面形式直
4、接獲知。比如,1就是一個就是一個常量,其值為其字面值常量,其值為其字面值1,而數據類型為整型。下面是幾,而數據類型為整型。下面是幾種不同數據類型的常量的示例:種不同數據類型的常量的示例:234 93LL 037 037 32e3 73.43 e下面的范例展示各種不同類型的常量的值。下面的范例展示各種不同類型的常量的值?!痉独痉独?-1】顯示常量的值和類型,見示例代碼】顯示常量的值和類型,見示例代碼3-1所示。所示。聯(lián)系方式:http:/北京源智天下科技有限公司示例代碼示例代碼3-101 #include 0203 int main(void) 04/* 使用使用printf函數輸出各種常量的
5、值函數輸出各種常量的值 */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的值的值 */10printf(73.43 = %lfn, 73.43);/* 輸出輸出73.43的值的值 */11printf(e = %cn,
6、 e);/* 輸出輸出e的值的值 */1213return 0;14 聯(lián)系方式:http:/北京源智天下科技有限公司示例代碼示例代碼3-1【運行結果】運行程序后,輸出結果如下圖所示?!具\行結果】運行程序后,輸出結果如下圖所示。聯(lián)系方式:http:/北京源智天下科技有限公司3.1.2 3.1.2 變量變量變量,顧名思義,與常量是相對的,就是指可以改變的量。變量,顧名思義,與常量是相對的,就是指可以改變的量。簡單地看,變量由兩部分組成:變量名和變量值。變量簡單地看,變量由兩部分組成:變量名和變量值。變量名是一個標識符;變量值為是一個數據值。在名是一個標識符;變量值為是一個數據值。在C語言中,語言中
7、,便可以使用變量名來表示變量值。所謂便可以使用變量名來表示變量值。所謂“變量就是指可變量就是指可以改變的量以改變的量”就是指其變量值是可以改變的。就是指其變量值是可以改變的?!痉独痉独?-2】演示變量的訪問和修改,實現(xiàn)方法如示例代碼】演示變量的訪問和修改,實現(xiàn)方法如示例代碼3-2所示。所示。聯(lián)系方式:http:/北京源智天下科技有限公司示例代碼示例代碼3-201#include 0203int main(void) 04int data = 24; /* 定義變量定義變量data */0506printf(data = %dn, data + 1); /* 訪問變量訪問變量data */07
8、data = 26; /* 修改變量值修改變量值 */08printf(data = %dn, data); /* 訪問變量訪問變量data */0910return 0;11聯(lián)系方式:http:/北京源智天下科技有限公司 【運行結果】程序輸出結果如下圖所示?!具\行結果】程序輸出結果如下圖所示。示例代碼示例代碼3-2聯(lián)系方式:http:/北京源智天下科技有限公司3.2 3.2 變量的使用變量的使用相對常量單一的使用方法而言,變量的使用必須依照一定的相對常量單一的使用方法而言,變量的使用必須依照一定的規(guī)則進行。要使用一個變量,首先要聲明和定義這個變規(guī)則進行。要使用一個變量,首先要聲明和定義這個變
9、量,然后才能使用它來表示數據。此外,還可以對變量量,然后才能使用它來表示數據。此外,還可以對變量進行多次賦值;其中,第一次賦值行為被稱為對變量的進行多次賦值;其中,第一次賦值行為被稱為對變量的初始化。本小節(jié)將依次討論這些問題,并在最后介紹與初始化。本小節(jié)將依次討論這些問題,并在最后介紹與變量緊密相關的地址操作符和指針操作符的使用。變量緊密相關的地址操作符和指針操作符的使用。 聯(lián)系方式:http:/北京源智天下科技有限公司3.2.1 3.2.1 聲明變量聲明變量聲明一個變量,實際上是以特定的格式聲明一個標識符,其聲明一個變量,實際上是以特定的格式聲明一個標識符,其作用是告訴編譯器與標識符相關聯(lián)的
10、一些屬性。變量聲作用是告訴編譯器與標識符相關聯(lián)的一些屬性。變量聲明包括數據類型名和變量名兩部分,其形式如下:明包括數據類型名和變量名兩部分,其形式如下:數據類型名數據類型名 變量名變量名【范例【范例3-3】使用未聲明的標識符,如示例代碼】使用未聲明的標識符,如示例代碼3-3所示。所示。聯(lián)系方式:http:/北京源智天下科技有限公司示例代碼示例代碼3-301#include 0203int main(void) 04printf(data = %dn, data);/* 輸出輸出data的值的值 */0506return 0;07【運行結果】編譯器在編譯時會報錯,信息如下:【運行結果】編譯器在編
11、譯時會報錯,信息如下:.3-3.c(4) : error C2065: data : undeclared identifier聯(lián)系方式:http:/北京源智天下科技有限公司3.2.2 3.2.2 定義變量定義變量變量定義的主要作用,是定義語句中的標識符代表的變量分變量定義的主要作用,是定義語句中的標識符代表的變量分配一塊內存。其形式與變量聲明基本一致,如下所示:配一塊內存。其形式與變量聲明基本一致,如下所示:數據類型名數據類型名 變量名變量名;在使用變量前,必須有定義語句為變量分配內存。一般情況在使用變量前,必須有定義語句為變量分配內存。一般情況下,只要將變量定義語句放在使用語句之前即可。首
12、先下,只要將變量定義語句放在使用語句之前即可。首先,由于變量的定義完成了聲明作為變量的標識符的功能,由于變量的定義完成了聲明作為變量的標識符的功能,因此在變量定義語句之后便可使用該變量名;其次,因此在變量定義語句之后便可使用該變量名;其次,變量的定義還為該變量分配了空間,因此在變量定義語變量的定義還為該變量分配了空間,因此在變量定義語句之后使用該變量才能訪問到對應的內存空間。句之后使用該變量才能訪問到對應的內存空間。聯(lián)系方式:http:/北京源智天下科技有限公司3.2.3 3.2.3 使用使用externextern聲明變量聲明變量從上一小節(jié)的討論知道,變量使用之前必須要先定義變量。從上一小節(jié)
13、的討論知道,變量使用之前必須要先定義變量。一般情況下,都會在變量定義語句之后才使用變量;若一般情況下,都會在變量定義語句之后才使用變量;若一定要在變量定義語句之前使用變量,也必須借助關鍵一定要在變量定義語句之前使用變量,也必須借助關鍵字字extern來聲明變量。使用來聲明變量。使用extern聲明變量的形式如下聲明變量的形式如下:extern 數據類型名數據類型名 變量名;變量名;【范例【范例3-4】使用】使用extern語句聲明變量,如示例代碼語句聲明變量,如示例代碼3-4所示所示。聯(lián)系方式:http:/北京源智天下科技有限公司示例代碼示例代碼3-401#include 0203int ma
14、in(void) 04extern int data;/* 聲明一個變量聲明一個變量data */05printf(data = %dn, data);/* 輸出輸出data的值的值*/0607return 0;080910int data = 23;/* 定義變量定義變量data */聯(lián)系方式:http:/北京源智天下科技有限公司示例代碼示例代碼3-4【運行結果】程序運行后,得到結果如下圖所示?!具\行結果】程序運行后,得到結果如下圖所示。聯(lián)系方式:http:/北京源智天下科技有限公司3.2.4 3.2.4 賦值和初始化賦值和初始化賦值是指為變量設定一個數值的過程。在變量的使用過程中,對賦值是
15、指為變量設定一個數值的過程。在變量的使用過程中,對函數賦值是十分頻繁的操作。對變量賦值最主要的方式是使用函數賦值是十分頻繁的操作。對變量賦值最主要的方式是使用賦值表達式,形式如下:賦值表達式,形式如下:變量名變量名 = 值值;例如:例如:01int a;02double b;03char c;0405a = 2;/* 給給a賦值賦值 */06b = 3.2;/* 給給b賦值賦值 */07c = c; /* 給給c賦值賦值 */聯(lián)系方式:http:/北京源智天下科技有限公司3.2.4 3.2.4 賦值和初始化賦值和初始化大部分的變量需要程序員在程序中以賦值的形式為其顯式初始化大部分的變量需要程序
16、員在程序中以賦值的形式為其顯式初始化。形式如下:。形式如下:數據類型名數據類型名 變量名變量名 = 初始值初始值;其中,初始值可以由程序員設定。使用初始化的方法,以上其中,初始值可以由程序員設定。使用初始化的方法,以上3個變量的賦值可以改寫為:個變量的賦值可以改寫為:01int a = 2;02double b = 3.2;03char c = c;聯(lián)系方式:http:/北京源智天下科技有限公司3.2.4 3.2.4 賦值和初始化賦值和初始化可以在一個語句中定義多個同類型的變量,形式如下:可以在一個語句中定義多個同類型的變量,形式如下:數據類型名數據類型名 變量變量1, 變量變量2, 變量變量
17、3 ;例如,要定義例如,要定義3個個int型變量可以寫為:型變量可以寫為:int a, b, c;但若要在一個語句中初始化多個變量,仍需挨個為其賦值。但若要在一個語句中初始化多個變量,仍需挨個為其賦值。例如:例如:int a = 2, b = 2, c = 2;若只在末尾賦值,如下所示:若只在末尾賦值,如下所示:int a, b, c = 2;【范例【范例3-5】展示了初始化的變量和未初始化的變量,如示】展示了初始化的變量和未初始化的變量,如示例代碼例代碼3-5所示。所示。 聯(lián)系方式:http:/北京源智天下科技有限公司 示例代碼示例代碼3-501 #include 0203 int main
18、(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, y); /* 輸出輸出x和和y的值的值 */11printf(a = %-8d b = %-8d c = %-8dn, a, b, c); /* 輸出輸出a、b和和c的的值值 */
19、12printf(i = %-8d j = %-8d k = %-8dn, i, j, k); /* 輸出輸出i、j和和k的值的值 */1314return 0;15 示例代碼示例代碼3-5聯(lián)系方式:http:/北京源智天下科技有限公司示例代碼示例代碼3-5【運行結果】本程序編譯后有如下警告信息:【運行結果】本程序編譯后有如下警告信息:.3-5.c(10) : warning C4700: uninitialized local variable x used.3-5.c(11) : warning C4700: uninitialized local variable b used.3-5.
20、c(11) : warning C4700: uninitialized local variable a used聯(lián)系方式:http:/北京源智天下科技有限公司示例代碼示例代碼3-5產生警告的原因是,變量產生警告的原因是,變量a、b和和c未初始化,由于這是程序有意而為的,未初始化,由于這是程序有意而為的,故忽略之。在故忽略之。在Visual Studio 2005環(huán)境下的運行程序,可得結果如下環(huán)境下的運行程序,可得結果如下圖所示。在圖所示。在Visual C 6.0環(huán)境下的運行程序,結果如下圖所示。環(huán)境下的運行程序,結果如下圖所示。聯(lián)系方式:http:/北京源智天下科技有限公司3.2.5 3
21、.2.5 地址操作符和指針操作符地址操作符和指針操作符變量被定義后,都會占用一塊內存,而內存都是有地址的。變量被定義后,都會占用一塊內存,而內存都是有地址的。由于一個變量可用以表示其內存空間,因此變量內存地由于一個變量可用以表示其內存空間,因此變量內存地址也可以直接稱為變量的地址。址也可以直接稱為變量的地址。C語言提供了地址操作符語言提供了地址操作符(&)來獲取變量(內存)的地址,同時還提供了指針操)來獲取變量(內存)的地址,同時還提供了指針操作符(作符(*)來獲取某地址上的內存內容。)來獲取某地址上的內存內容。聯(lián)系方式:http:/北京源智天下科技有限公司1 1地址操作符(地址操作符
22、(& &)要獲取一個變量的地址,在該變量名前加要獲取一個變量的地址,在該變量名前加&即可,例如下圖即可,例如下圖中的變量中的變量data為例,其地址為為例,其地址為0016。要獲取其地址值,。要獲取其地址值,可以使用可以使用“&data”,它的結果即為,它的結果即為0016。此外,地址操。此外,地址操作符只能使用變量作為操作數,不能將其用在常量前面作符只能使用變量作為操作數,不能將其用在常量前面,比如:,比如:&14&c這種用法是錯誤的。這種用法是錯誤的。聯(lián)系方式:http:/北京源智天下科技有限公司2 2指針操作符(指針操作符(* *)要取得一
23、個地址中的內容,可以使用指針操作符要取得一個地址中的內容,可以使用指針操作符*。指針操。指針操作符的操作對象必須為地址,例如:作符的操作對象必須為地址,例如:*(&data)其中,其中,&data是是data的地址,在前加指針操作符即可獲得該的地址,在前加指針操作符即可獲得該地址上的存儲內容。指針操作符的使用的對象只能為變地址上的存儲內容。指針操作符的使用的對象只能為變量地址。如下的用法是錯誤的量地址。如下的用法是錯誤的:01int p = 2;02int q = &p;/* 正確,正確,q為為p的地址,但會有警告的地址,但會有警告 */03int z = *q;/*
24、錯誤,這里的錯誤,這里的q被認為是被認為是int型,不是變量型,不是變量地址地址*/【范例【范例3-6】展示如何】展示如何使用使用地址操作符和指針操作符,地址操作符和指針操作符,如示例代碼如示例代碼3-6所示。所示。聯(lián)系方式:http:/北京源智天下科技有限公司示例代碼示例代碼3-601 #include 0203 int main(void) 04int key = 0;/* 定義變量定義變量key */0506printf(Please input a integer:);07scanf(%d, &key);/* 為為key賦值賦值 */08printf(keyt= %dn, ke
25、y);/* 輸出輸出key的值的值 */0910printf(&keyt= %pn, &key);/* 輸出輸出key的地址的地址 */11printf(*(&key)t= %dn, *(&key);/* 再次輸出再次輸出key的值的值 */12 return 0;13聯(lián)系方式:http:/北京源智天下科技有限公司圖圖3-7 地址操作符和指針操作符地址操作符和指針操作符【運行結果】程序運行后,得到結果下圖所示。【運行結果】程序運行后,得到結果下圖所示。聯(lián)系方式:http:/北京源智天下科技有限公司3.3 3.3 格式化輸入輸出格式化輸入輸出格式化輸入是指按照給定
26、的格式從輸入設備讀取數據;相應格式化輸入是指按照給定的格式從輸入設備讀取數據;相應地,格式化輸出是指按照給定的格式向輸出設備輸出字地,格式化輸出是指按照給定的格式向輸出設備輸出字符串。符串。C語言提供了語言提供了printf函數和函數和scanf函數來實現(xiàn)數據的函數來實現(xiàn)數據的格式化輸入和輸出,這兩個函數是格式化輸入和輸出,這兩個函數是C語言中最常用的輸入語言中最常用的輸入輸出函數,在本小節(jié)中將簡要介紹這兩個函數的用法和輸出函數,在本小節(jié)中將簡要介紹這兩個函數的用法和特點。特點。聯(lián)系方式:http:/北京源智天下科技有限公司3.3.1 printf3.3.1 printf函數函數printf函
27、數屬于函數屬于C標準庫函數,要使用這兩個函數必須包含標準庫函數,要使用這兩個函數必須包含頭文件頭文件“stdio.h”。printf函數的功能是向標準輸出打印函數的功能是向標準輸出打印特定的內容。調用的標準形式如下:特定的內容。調用的標準形式如下:printf(參數參數1, 參數參數2, 參數參數3, 參數參數4, );參數參數1為一串包含在一對引號內的字符,即字符串;參數為一串包含在一對引號內的字符,即字符串;參數2、參數參數3及其后的所有參數為要輸出的數值。為方便表述,及其后的所有參數為要輸出的數值。為方便表述,將其形式改寫為:將其形式改寫為:printf(字符串字符串, 參數列表參數列表
28、);范例范例3-7展示了展示了printf函數對字符串和變量的處理方式。函數對字符串和變量的處理方式?!痉独痉独?-7】展示】展示printf函數的使用,如示例代碼函數的使用,如示例代碼3-7所示。所示。聯(lián)系方式:http:/北京源智天下科技有限公司示例代碼示例代碼3-701 #include 0203 int main(void) 04int intValue1 = 1;/* 定義第定義第1個個int型變量型變量*/05int intValue2 = 2;/* 定義第定義第2個個int型變量型變量*/06char charValue = s;/* 定義一個定義一個char型變量型變量*/0
29、708printf(intValue1 = %dn, intValue1);/* 輸出輸出第第1個變量個變量*/09printf(intValue2 = %ddn, intValue2);/* 輸出第輸出第2個變量個變量*/10printf(charValue = %cn, charValue);/* 輸出第輸出第3個變量個變量*/11return 0;12 聯(lián)系方式:http:/北京源智天下科技有限公司示例代碼示例代碼3-7【運行結果】程序運行后,得到結果如下圖所示?!具\行結果】程序運行后,得到結果如下圖所示。聯(lián)系方式:http:/北京源智天下科技有限公司3.3.2 scanf3.3.2 s
30、canf函數函數scanf函數也屬于函數也屬于C標準庫函數,使用時也必須包含頭文件標準庫函數,使用時也必須包含頭文件“stdio.h”。scanf函數和函數和printf函數的調用形式和處理數函數的調用形式和處理數據的方式都十分相似。標準的調用形式如下:據的方式都十分相似。標準的調用形式如下:scanf(參數參數1, 參數參數2, 參數參數3, 參數參數4, );參數參數1為按照特定格式書寫的字符串;其后帶一個參數列表為按照特定格式書寫的字符串;其后帶一個參數列表,參數,參數2、參數、參數3及其后的所有參數都為用來存儲讀取的及其后的所有參數都為用來存儲讀取的數值的空間地址。類似的,這個函數的調
31、用形式也可以數值的空間地址。類似的,這個函數的調用形式也可以改寫為:改寫為:scanf(字符串字符串, 參數列表參數列表);【范例【范例3-8】展示】展示printf函數和函數和scanf函數的使用,如示例代函數的使用,如示例代碼碼3-8所示。所示。聯(lián)系方式:http:/北京源智天下科技有限公司示例代碼示例代碼3-801 #include 02 int main(void) 03/* 定義兩個變量定義兩個變量 */04int u = 0;05int v = 0;06printf(Th%cs is %c te%cting program%c!n, /* 為分行號為分行號 */07i, a, s,
32、 !);/* 使用使用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 聯(lián)系方式:http:/北京源智天下科技有限公司示例代碼示例代碼3-8【運行結果】程序運行后,在得到如下圖第【運行結果】程序運行后,在得到如下圖第1行所示內容的行所示內容的結果后,輸入如該下圖第結果后,輸入如該下圖第2行所示的字符串,最后可以得行所示的字符串,最后可以得到結果如圖中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江國企招聘2025浙江金投兩頭烏火腿有限公司招聘5人筆試參考題庫附帶答案詳解
- 2025福建省福規(guī)市政工程有限公司招聘5人筆試參考題庫附帶答案詳解
- 2025江蘇無錫市宜興市大數據發(fā)展有限公司招聘勞務派遣人員3人筆試參考題庫附帶答案詳解
- 2025內蒙古天利豐燃氣有限公司招聘16人筆試參考題庫附帶答案詳解
- 學費協(xié)議書合同
- 投資入股合同協(xié)議書
- 宅基地點水合同協(xié)議書
- 合同部分收款協(xié)議書
- 業(yè)績合同協(xié)議書
- 合同協(xié)議書應包括哪些
- 《影視光線藝術與照明技巧》word版本
- 主題班會:君子自強不息
- 《口袋妖怪漆黑的魅影》圖文攻略全周目
- 《格林童話》讀書分享ppt
- 阿里云:生來創(chuàng)新-金融級云原生
- 兒科護理學第二章生長發(fā)育
- 高中數學說題課件
- 文檔文檔防淹門
- 機電安裝施工工藝及質量驗收標準
- JB/T 20051-2018炒藥機
- GB/T 28724-2012固體有機化學品熔點的測定差示掃描量熱法
評論
0/150
提交評論