C語言的數(shù)據(jù)類型_第1頁
C語言的數(shù)據(jù)類型_第2頁
C語言的數(shù)據(jù)類型_第3頁
C語言的數(shù)據(jù)類型_第4頁
C語言的數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第2章章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式第一節(jié)第一節(jié) C的數(shù)據(jù)類型及常量數(shù)據(jù)的數(shù)據(jù)類型及常量數(shù)據(jù)第二節(jié)第二節(jié) 變量及其類型變量及其類型第三節(jié)第三節(jié) 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式1 / 71C語言程序設(shè)計語言程序設(shè)計 龍昭華主編課件制作:劉達(dá)明課件制作:劉達(dá)明一節(jié)第一節(jié) C的數(shù)據(jù)類型及常量數(shù)據(jù)的數(shù)據(jù)類型及常量數(shù)據(jù)(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)2 / 71 由于“程序=算法+數(shù)據(jù)結(jié)構(gòu)”,算法處理的對象是數(shù)據(jù),而數(shù)據(jù)是以某種特定的形式存在的(如整數(shù)、實(shí)數(shù)、字符等)。不同的數(shù)據(jù)之

2、間往往還存在某些聯(lián)系(如若干整數(shù)組成一個整數(shù)數(shù)組)。 所謂數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)指的是數(shù)據(jù)的組織形式,如數(shù)組就是一種數(shù)據(jù)結(jié)構(gòu)。不同的計算機(jī)語言所允許定義和使用的數(shù)據(jù)結(jié)構(gòu)是不同的,處理同一類問題如果數(shù)據(jù)結(jié)構(gòu)不同,算法也會不同。因此考慮算法時,必須注意數(shù)據(jù)結(jié)構(gòu)。一、一、 C C的數(shù)據(jù)類型分類的數(shù)據(jù)類型分類空類型空類型(void)指針類型指針類型(*)數(shù)據(jù)類型數(shù)據(jù)類型基本類型基本類型整型整型(int)字符型字符型(char)枚舉類型枚舉類型(新增加的新增加的)(enum)實(shí)型實(shí)型(浮點(diǎn)型浮點(diǎn)型)雙精度型雙精度型(double)單精度型單精度型(float)構(gòu)造類型構(gòu)造類型數(shù)組類型數(shù)組類型結(jié)構(gòu)體類型結(jié)構(gòu)體類

3、型(struct)共用體類型共用體類型(union) 實(shí)際上,應(yīng)當(dāng)綜合考慮算法和數(shù)據(jù)結(jié)構(gòu),選擇最佳的數(shù)據(jù)結(jié)構(gòu)和算法。 C語言的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)是以數(shù)數(shù)據(jù)類型據(jù)類型形式出現(xiàn)的。 C的數(shù)據(jù)類型分類如右邊所示:課件制作:劉達(dá)明課件制作:劉達(dá)明、二、 常量及其類型常量及其類型第一節(jié)第一節(jié) C的數(shù)據(jù)類型及常量數(shù)據(jù)的數(shù)據(jù)類型及常量數(shù)據(jù)3 / 71 在程序運(yùn)行過程中,其值不能被改變的量稱為常量。常量。 1 1、直接常量、直接常量 常量一般從其字面形式即可判斷,這種常量稱為字面常量或直接常量。常量分為以下不同類型: 、整型常量、整型常量 即整常數(shù),它在C中有三種表示方法: 十進(jìn)制整

4、數(shù)十進(jìn)制整數(shù):如:58、123、-456、0、-9等。它們是以非數(shù)字0開頭,并由數(shù)字09組成,可以帶正負(fù)號。 八進(jìn)制整數(shù)八進(jìn)制整數(shù):如:011、089、-0112、00、-09等。它們是以數(shù)字0開頭,并由數(shù)字07組成,可以帶正負(fù)號。 十六進(jìn)制整數(shù)十六進(jìn)制整數(shù):如:0 x123、0X119、0 x8f、-0 x1E、0 x0等。它們是以數(shù)字0和字母x聯(lián)合組成的0 x或0X開頭,并由數(shù)字09和字母AF(或af)組成,可以帶正負(fù)號。 注意:在整型常數(shù)后添加字母“L”或“l(fā)”,是長整型數(shù),添加“u”則是無符號基本整型數(shù)。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表

5、達(dá)式)課件制作:劉達(dá)明課件制作:劉達(dá)明實(shí)型常量實(shí)型常量第一節(jié)第一節(jié) C的數(shù)據(jù)類型及常量數(shù)據(jù)的數(shù)據(jù)類型及常量數(shù)據(jù)4 / 71 實(shí)型常量又稱浮點(diǎn)數(shù),它即數(shù)學(xué)里的實(shí)數(shù),在C中有兩種表示方法: 十進(jìn)制小數(shù)形式十進(jìn)制小數(shù)形式:它由數(shù)字09和小數(shù)點(diǎn)組成(注意必須有小數(shù)點(diǎn).),可以帶正負(fù)號。如:.123、56.、89.0、-456.32、0.0、-.9、0.78、-0.99等。 指數(shù)形式指數(shù)形式:也稱科學(xué)表示法。如:123e3或123E3都代表123123* *10103 3。 注意:字母e或E之前必須有數(shù)字,且字母e或E之后的指數(shù)必須是整數(shù)。 一個實(shí)數(shù)可以有多種指數(shù)表示形式,如

6、:123.456可以表示為123.456e0、12.3456e1、1.23456e2、.123456e3、0.0123456e4等。我們把在字母e或E之前的小數(shù)部分中,小數(shù)點(diǎn)左邊應(yīng)有一位(且只能有一位)非零的數(shù)字的表示稱為“規(guī)范化的指數(shù)形式”。如1.23456e2、-6.8e8、8.9e-2等。一個實(shí)數(shù)在用指數(shù)形式輸出時,是按規(guī)范化的指數(shù)形式輸出的。如:5689.65按指數(shù)形式輸出的話,結(jié)果為5.68965e+003。 注意注意:浮點(diǎn)常數(shù)只有一種進(jìn)制(十進(jìn)制);所有浮點(diǎn)常數(shù)都被默認(rèn)為double型;實(shí)數(shù)常量后面跟一個f或F表示該常量為float型,或跟一個l或L表示該常量為long doubl

7、e型。如:8.9、8.9F、8.9L表示不同的數(shù)據(jù)類型。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)課件制作:劉達(dá)明課件制作:劉達(dá)明字符型常量、字符型常量第一節(jié)第一節(jié) C的數(shù)據(jù)類型及常量數(shù)據(jù)的數(shù)據(jù)類型及常量數(shù)據(jù)5 / 71 C的字符型常量是用單引號單引號括起來的一個字符。(注意是單引號) 如:A、a、D、*、$、0等。注意:A和a是兩個不同的字符常量。 除了以上形式的字符常量外,C語言還有一種特殊的字符常量轉(zhuǎn)義字符。它以“”開頭,使用時用一對單引號將其括起來。如n表示回車換行字符,即鍵盤上的“Enter”鍵。字符形式字符形

8、式 功能含義功能含義 十六進(jìn)制值十六進(jìn)制值 ASICII代碼代碼 等效按鍵等效按鍵 n 換行換行 ,將當(dāng)前位置移到下一行開頭,將當(dāng)前位置移到下一行開頭 0 x0A 10 Ctrl+J t 橫向跳格橫向跳格(跳到下一個跳到下一個tab位置位置) 0 x09 9 Ctrl+I v 豎向跳格豎向跳格 0 x0B 11 Ctrl+K b 退格,將當(dāng)前位置移到前一列退格,將當(dāng)前位置移到前一列 0 x08 8 Ctrl+H r 回車,將當(dāng)前位置移到本行開頭回車,將當(dāng)前位置移到本行開頭 0 x0D 13 Ctrl+M f 走紙換頁,將當(dāng)前位置移到下頁開頭走紙換頁,將當(dāng)前位置移到下頁開頭 0 x0C 12 C

9、trl+L 反斜杠反斜杠 0 x5C 92 單引號字符單引號字符 0 x27 39 ? 問號字符問號字符 0 x3F 63 ? ” 雙引號字符雙引號字符 0 x22 34 “ a 報警響鈴報警響鈴 0 x07 7 Ctrl+G 0 空空 0 x00 0 Ctrl+ ddd 13位八進(jìn)制數(shù)所代表的字符位八進(jìn)制數(shù)所代表的字符 xhh 12位十六進(jìn)制數(shù)所代表的字符位十六進(jìn)制數(shù)所代表的字符如:如:printf(“a=11n”);printf(“c=33”);輸出結(jié)果為:輸出結(jié)果為:a=11b=33如果不帶如果不帶n字符,字符,則輸出:則輸出:a=11c=338進(jìn)制:進(jìn)制:101表表A。16進(jìn)制:進(jìn)制:

10、x41表表A。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)課件制作:劉達(dá)明課件制作:劉達(dá)明字符串常量、字符串常量第一節(jié)第一節(jié) C的數(shù)據(jù)類型及常量數(shù)據(jù)的數(shù)據(jù)類型及常量數(shù)據(jù)6 / 71 字符串常量字符串常量是一對雙引號“”括起來的字符序列。如: “how do you do!”、“a”、“123”。 C規(guī)定:在每一個字符串的結(jié)尾加一個“字符串結(jié)束標(biāo)志”(為字符0),以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。0是一個ASCII碼為0的字符,從ASCII代碼表中可以看到ASCII碼為0的字符是“空操作符”,即它不引起任何控制動作,也不是一個

11、可顯示字符。 特別注意特別注意:用一對單引號括起來的是字符,它只占一個字節(jié)。而一對雙引號“”括起來的是字符串,它占至少兩個字節(jié),在字符串結(jié)尾處有空字符0。 在C語言中,沒有專門的字符串變量,如果想將一個字符串存放在變量中,必須使用字符型數(shù)組。a0字符串字符串”a”存儲時占存儲時占2個字節(jié)個字節(jié)a字符字符a存儲時占存儲時占1個字節(jié)個字節(jié)c0字符串字符串”china”存儲時占存儲時占6個字節(jié)個字節(jié)hina(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)課件制作:劉達(dá)明課件制作:劉達(dá)明 023-668341102 2、符號常量、符號常量第一節(jié)第一節(jié) C的數(shù)據(jù)類

12、型及常量數(shù)據(jù)的數(shù)據(jù)類型及常量數(shù)據(jù)7 / 71 符號常量是指用一個標(biāo)識符代表的常量,即標(biāo)識符形式的常量。 定義符號常量的方法是用#define#define命令把一個常量名和常量聯(lián)系起來,符號常量的使用給調(diào)試程序帶來很大的方便。符號常量的值在其作用域內(nèi)不能改變,也不能重新賦值。如: #define N 5表示N代表常量5。 習(xí)慣上,符號常量名用大寫,變量名用小寫,以示區(qū)別。 使用符號常量有如下好處:第一,含義清楚。第二,在需要改變一個常量時能做到“一改全改”。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)課件制作:劉達(dá)明課件制作:劉達(dá)明 023-6683

13、4110例例 2.1:第一節(jié)第一節(jié) C的數(shù)據(jù)類型及常量數(shù)據(jù)的數(shù)據(jù)類型及常量數(shù)據(jù)8 / 71(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)#include #define PRICE 30main() int num,total; num=10; total=num*PRICE; printf(“total=%dn”,total);程序運(yùn)行結(jié)果為:total=300 #define命令出現(xiàn)在程序中函數(shù)的外面,其有效范圍為定義命令之后有效范圍為定義命令之后到文源文件結(jié)束到文源文件結(jié)束。通常,#define命令寫在文件開頭,函數(shù)之前作為文件一部分,其作用域?yàn)?/p>

14、整個文件。如例2.1。當(dāng)然也可以用#undef命令終止#define的作用域。如例2.2。例例 2.22.2:#include #define TEMP 100main() #undef TEMPf1()TEMP的作用域課件制作:劉達(dá)明課件制作:劉達(dá)明第2章章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式-習(xí)題習(xí)題19 / 71C語言程序設(shè)計語言程序設(shè)計 龍昭華主編 習(xí)習(xí) 題題 (一一)* 復(fù)習(xí)本章已講內(nèi)容,預(yù)習(xí)本章剩余內(nèi)容。復(fù)習(xí)本章已講內(nèi)容,預(yù)習(xí)本章剩余內(nèi)容。課件制作:劉達(dá)明課件制作:劉達(dá)明二節(jié)第二節(jié) 變量及其類型

15、變量及其類型10 / 71一、一、 變量及其分類變量及其分類 1 1、變量的概念、變量的概念 變量變量是指在程序運(yùn)行過程中,其值可以改變的量。變量具有三要素:變量變量名名、變量值變量值、變量地址變量地址(即變量存儲單元的首地址)。即一個變量應(yīng)該有一個名字,在內(nèi)存中占據(jù)一定的存儲單元,在該存儲單元中存放變量的值。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式) 變量名實(shí)際上是一個符號地址,在對程序編譯時,由系統(tǒng)給每個變量名分配一個內(nèi)存地址。在程序中從變量中讀值,實(shí)際上是通過變量名找到相應(yīng)的內(nèi)存地址,從其存儲單元中讀取數(shù)據(jù)。變量要先定義后使用變量要先定義后使

16、用。 變量名變量名是標(biāo)識符標(biāo)識符(用來標(biāo)識變量、符號常量、函數(shù)名、數(shù)組名、類型名、文件名等的有效字符序列)的一種,它是由字母、數(shù)字、下劃線三種字符組成的,且第3a變量名變量名變量值變量值存儲單元存儲單元一個字符必須為字母或下劃線,其長度不要超過8個字符(MSC)或32個字符(TurboC)。為了通用,建議不要超過8個字符。對于一般用來表示整數(shù)變量和臨時變量的單字符變量名,由于易與數(shù)字1和0混淆,而不使用字母l和o,單字符變量一般使用i、j、k、m、n。課件制作:劉達(dá)明課件制作:劉達(dá)明量值:變量值:第二節(jié)第二節(jié) 變量及其類型變量及其類型11 / 71 變量是用來存放數(shù)

17、據(jù)的,由于數(shù)據(jù)有不同的類型,因此要定義相應(yīng)類型的變量來存放它。對某變量規(guī)定數(shù)據(jù)類型,實(shí)際上是對該變量內(nèi)存中存放的二進(jìn)制數(shù)值按照相應(yīng)數(shù)據(jù)類型的規(guī)定進(jìn)行相應(yīng)的值解釋而已。 變量地址變量地址:在C程序編譯時,會根據(jù)變量的數(shù)據(jù)類型為每個變量劃出一定數(shù)目的存儲單元存放變量的值,變量所占據(jù)的存儲單元的起始地址起始地址就是變量的地址。 變量的地址表示為:&變量名D199920002001 例如:char a=D; 則&a就是字符變量a的地址,如右圖所示:字符變量a的地址為2000,字符變量a的值就存放在2000單元中。 例如:int n=108; 則&n就是整型變量n的地址,如右圖所

18、示:整型變量n的地址3002,但整型變量n的值就存儲在存儲單元3002和3003兩個字節(jié)中。1083001300230033004例如: int a,b; scanf(“%d , %d”,&a,&b);(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)課件制作:劉達(dá)明課件制作:劉達(dá)明 023-668341102 2、變量的分類、變量的分類第二節(jié)第二節(jié) 變量及其類型變量及其類型12 / 71 根據(jù)所聲明的位置不同根據(jù)所聲明的位置不同,變量可分為局部變量局部變量、形式參數(shù)形式參數(shù)和全局變量全局變量。變量可以在程序中三個地方聲明:函數(shù)內(nèi)部、函數(shù)的

19、參數(shù)定義中或所有的函數(shù)外部。 根據(jù)變量存儲類型根據(jù)變量存儲類型,變量可分為自動變量自動變量(用auto聲明)、靜態(tài)變量靜態(tài)變量(用static聲明) 、外部變量外部變量(用extern聲明)和寄存器變量寄存器變量(用register聲明)。 聲明變量時,如果不指定存儲類型,則其缺省的存儲類型為自動變量。因此,定義自動變量時不必使用auto聲明。我們使用的大多數(shù)變量都屬于自動變量存儲類型。 根據(jù)數(shù)據(jù)類型根據(jù)數(shù)據(jù)類型,變量可分為整型變量整型變量(用int、long等聲明)、實(shí)型變量實(shí)型變量(用float、double等聲明)、字符型變量字符型變量(用char聲明)、 數(shù)組變量、指針型變量、結(jié)數(shù)組變

20、量、指針型變量、結(jié)構(gòu)體變量構(gòu)體變量(用struct聲明)、 共用體變量共用體變量(用union聲明)、 枚舉類型變量枚舉類型變量(用enum聲明)。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)課件制作:劉達(dá)明課件制作:劉達(dá)明 023-668341103 3、變量的聲明和賦值、變量的聲明和賦值第二節(jié)第二節(jié) 變量及其類型變量及其類型13 / 71變量的聲明方法變量的聲明方法: 類型名 ; 如:int i,j,k; char a,b,c;(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式) 變量賦初值的方法變量賦初值的方

21、法: 如: int i=3 , j ; char a=A , c ; j=10; c=9; 注意:注意:在C語言中,要求對所有用到的變量做強(qiáng)制定義,也就是說“先定義,后使用”,這樣做有如下好處: 凡是未被事先定義的,不做變量名,保證程序中變量名不至于前后書寫不一致。 每一變量被指定為一確定類型,在編譯時就能為其分配相應(yīng)的存儲單元。 指定每一變量屬于一個類型,這就便于在編譯時,據(jù)此檢查該變量所進(jìn)行的運(yùn)算是否合法。如:整型變量a和b可以進(jìn)行求余運(yùn)算:a%b ,得到 a/b 的余數(shù)。但如果將a和b指定為實(shí)型變量的話,則不允許進(jìn)行“求余”運(yùn)算。課件制作:劉達(dá)明課件制作:劉達(dá)明/p>

22、二、二、 基本數(shù)據(jù)類型變量基本數(shù)據(jù)類型變量第二節(jié)第二節(jié) 變量及其類型變量及其類型14 / 71 1 1、整型變量、整型變量 整型變量在內(nèi)存中的存放形式整型變量在內(nèi)存中的存放形式 數(shù)據(jù)在內(nèi)存中是以二進(jìn)制二進(jìn)制形式存放的。整型變量整型變量是用來存放整型數(shù)據(jù)整型數(shù)據(jù)的變量,而整型數(shù)據(jù)在計算機(jī)內(nèi)存中以補(bǔ)碼形式存放補(bǔ)碼形式存放的。(一個正數(shù)的補(bǔ)碼和其原碼相同。而負(fù)數(shù)的補(bǔ)碼是將該值的絕對值的二進(jìn)制形式,按位取反再加1。)SfS1S2S3Sn符號位符號位整數(shù)的數(shù)值部分整數(shù)的數(shù)值部分 當(dāng)符號位sf為0時,表示該數(shù)為正數(shù);當(dāng)sf為1時,表示該數(shù)為負(fù)數(shù)。 例如:int i=10,j=-10; 的存儲方式見圖a和圖

23、b。圖a表示存放示意圖,圖b是數(shù)據(jù)在內(nèi)存中的實(shí)際存放情況。整型數(shù)為16位二進(jìn)制數(shù)。10ai0bi000000000001010-10aj1bj111111111110110(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)課件制作:劉達(dá)明課件制作:劉達(dá)明符號整型數(shù)據(jù)和無符號整型數(shù)據(jù)的存儲:有符號整型數(shù)據(jù)和無符號整型數(shù)據(jù)的存儲:第二節(jié)第二節(jié) 變量及其類型變量及其類型15 / 71 有符號整數(shù)的范圍-3276832767-3276832767,無符號整數(shù)的范圍065535065535。無符號整數(shù)使用unsigned修飾。在聲明變量時

24、,如果不指定unsigned或指定signed,則表示有符號型數(shù)據(jù),符號位有效。如果指定unsigned,則表示無符號型數(shù)據(jù),符號位為該數(shù)本身。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)032767有符號整型有符號整型變量變量a:111111111111111符號位符號位165535無符號整型無符號整型變量變量c:111111111111111代表數(shù)據(jù)代表數(shù)據(jù)的第一位的第一位1-1有符號整型有符號整型變量變量b:111111111111111如:如:int a,b;int a,b;a=32767;a=32767;b=-1;b=-1;unsigned

25、 int c;unsigned int c;c=65535;課件制作:劉達(dá)明課件制作:劉達(dá)明整型變量的分類、整型變量的分類第二節(jié)第二節(jié) 變量及其類型變量及其類型16 / 71 有符號整型變量有符號整型變量 基本型:一般占2個字節(jié)(16位),int 短整型:一般占2個字節(jié)(16位),short int 長整型:一般占4個字節(jié)(32位),long int 有符號整型變量使用signed修飾,但缺省的數(shù)據(jù)類型即表示有符號整型數(shù)據(jù),因此可以省略修飾符signed。 無符號整型變量無符號整型變量 無符號基本型:一般占2個字節(jié)(16位),unsigned int 無符號短整型:

26、一般占2個字節(jié)(16位),unsigned short int 無符號長整型:一般占4個字節(jié)(32位),unsigned long int(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)課件制作:劉達(dá)明課件制作:劉達(dá)明整型變量長度、整型變量長度第二節(jié)第二節(jié) 變量及其類型變量及其類型17 / 71 C標(biāo)準(zhǔn)沒有具體規(guī)定整型變量各類型數(shù)據(jù)所占內(nèi)存字節(jié)數(shù),只要求long型數(shù)據(jù)長度不短于int型,short型不長于int型。具體如何實(shí)現(xiàn),由各計算機(jī)系統(tǒng)及C系統(tǒng)自行決定。 各種計算機(jī)的數(shù)據(jù)字長各種計算機(jī)的數(shù)據(jù)字長 IBM PCVAX750

27、IBM370HPHoneywellshort int1616161636int1632323236long int3232323236 在C系統(tǒng)中,通常把long定義為32位,把short定義為16位,而int可以是16位或32位,主要取決于機(jī)器字長,一般以一個機(jī)器字word存放一個int數(shù)據(jù)。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)課件制作:劉達(dá)明課件制作:劉達(dá)明種整型數(shù)據(jù)在各種整型數(shù)據(jù)在C C系統(tǒng)中的長度及取值范圍系統(tǒng)中的長度及取值范圍第二節(jié)第二節(jié) 變量及其類型變量及其類型18 / 71 ANSI標(biāo)準(zhǔn)建議各種整型數(shù)

28、據(jù)所占位數(shù)和數(shù)值范圍如右表所示(TurboC與該表定義一致):注意注意: 在微機(jī)上用long型可以得到大范圍的整數(shù),但同時會降低運(yùn)算速度,因此除非不得已,不要隨便使用long型數(shù)據(jù)。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)類型類型名稱名稱比特比特數(shù)數(shù)最小取值范圍最小取值范圍signed short int有符號短有符號短整型整型16-3276832767 即即-215(215-1)signed int有符號基有符號基本整型本整型16-3276832767 即即-215(215-1)signed long int有符號長有符號長整型整型32-214

29、7483648-2147483647 即即-231(231-1)unsigned short int無符號短無符號短整型整型16065535 即即0(216-1)unsigned int無符號基無符號基本整型本整型16065535 即即0(216-1)unsigned long int無符號長無符號長整型整型3204294967295 即即0(232-1)課件制作:劉達(dá)明課件制作:劉達(dá)明整型變量的定義與賦值、整型變量的定義與賦值第二節(jié)第二節(jié) 變量及其類型變量及其類型19 / 71 每個變量使用前必須定義,一般放在函數(shù)的開頭的聲明部分定義變量。如:定義: int a,

30、b; short i,j; long x,y; /* 定義有符號整型變量 */ unsigned int c,d; unsigned short e,f; unsigned long s,t; 賦值: a=21910; b=-20; i=-30201; j=90; x=801023; y=-203984; c=400u; d=9010; e=1002; f=2030; s=80L; t=-987L;注意注意:一個在-3276832767范圍內(nèi)的整數(shù),則認(rèn)為是int型,可賦給int型和long型。一個超過了-3276832767范圍內(nèi)的整數(shù),而在-2147483648-2147483647范圍內(nèi)

31、,則認(rèn)為它是long型,可以賦給long型。一個整常量后面加一個字母u,則認(rèn)為是unsigned int型,如:123u。如果寫成-12345u,則先將-12345轉(zhuǎn)換成其補(bǔ)碼53191,然后再按無符號數(shù)存儲。如:unsigned int a=-12345u; printf(“%d, %un”,a,a); 結(jié)果為:-12345, 53191。一個整常數(shù)量后面加一個字母L或l,則認(rèn)為是long型。這往往用于函數(shù)調(diào)用,如果函數(shù)的形參為long,則要求實(shí)參也為long型,此時用123則不行,而要用123L代入。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)課

32、件制作:劉達(dá)明課件制作:劉達(dá)明整型數(shù)據(jù)的溢出、整型數(shù)據(jù)的溢出第二節(jié)第二節(jié) 變量及其類型變量及其類型20 / 71 一個int型變量的最大允許值為:32767。如果再加1,則結(jié)果會變成-32768。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)032767a:1111111111111111-32768b:000000000000000例例 2.3:main() int a=32767,b; long c; b=a+1; c=(long)a+1L; printf(“a=%d,b=%d,c=%ld”,a,b,c);運(yùn)行結(jié)果為:運(yùn)

33、行結(jié)果為:32767,-32768,32768例例 2.4:main() int x= -1; unsigned int y; y=x; printf(“%d,%d,%un”,x,y,y);運(yùn)行結(jié)果為:運(yùn)行結(jié)果為:-1,-1,65535 無符號數(shù)輸出時,最高位數(shù)值變成符號位。如符號位為1,則輸出負(fù)數(shù)。課件制作:劉達(dá)明課件制作:劉達(dá)明 023-668341102 2、實(shí)型變量、實(shí)型變量第二節(jié)第二節(jié) 變量及其類型變量及其類型21 / 71 實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式 存放實(shí)數(shù)存放實(shí)數(shù)的變量就是實(shí)型變量實(shí)型變量。一個實(shí)型變量在內(nèi)存中是按浮點(diǎn)數(shù)指數(shù)形浮點(diǎn)數(shù)指數(shù)形式存放式存放的

34、。系統(tǒng)把一個實(shí)型數(shù)據(jù)分成小數(shù)部分小數(shù)部分和指數(shù)部分指數(shù)部分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式。常用的微機(jī)系統(tǒng)中一個實(shí)型數(shù)據(jù)在內(nèi)存中占4個字節(jié)(32位),在這32位中,究竟用多少位來表示小數(shù)部分,多少位來表示指數(shù)部分,標(biāo)準(zhǔn)C并無規(guī)定,由各C編譯系統(tǒng)自定。不少C編譯系統(tǒng)以以2424位表示小數(shù)部分位表示小數(shù)部分(包括符號),以以8 8位表示指數(shù)部分位表示指數(shù)部分(包括指數(shù)的符號)。小數(shù)部分占的位(bit)數(shù)愈多,數(shù)的有效數(shù)字就越多,精度愈高。指數(shù)部分占的位數(shù)越多,則能表示的數(shù)值范圍就越大。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)+.3141592

35、+ .314159 * * 102符號符號小數(shù)部分小數(shù)部分指數(shù)指數(shù)31.4159 如實(shí)數(shù):31.4159的指數(shù)形式為:.314159.314159* *10102 2 ,它在內(nèi)存中的存放形式可以表示為右圖所示。 圖中用十進(jìn)制表示的,實(shí)際上在計算機(jī)中是用二進(jìn)制來表示小數(shù)部分,用2的冪次來表示指數(shù)部分。課件制作:劉達(dá)明課件制作:劉達(dá)明實(shí)型變量的分類及其長度、實(shí)型變量的分類及其長度第二節(jié)第二節(jié) 變量及其類型變量及其類型22 / 71 C的實(shí)型變量分為:單精度單精度(float型)、雙精度雙精度(double)、長雙精度長雙精度(long double)型三種。下表列出了微

36、機(jī)上常用的C編譯系統(tǒng)(如TurboC、MSC、Borland C)的實(shí)型數(shù)據(jù)的情況。注意:不同的系統(tǒng)、不同的資料會有所差異,浮點(diǎn)數(shù)的內(nèi)部表示與機(jī)器的硬件結(jié)構(gòu)相關(guān),是最少被計算機(jī)標(biāo)準(zhǔn)化的內(nèi)容之一,對特定的編譯器都應(yīng)閱讀其文檔資料以了解float和double的精度和范圍(在ANSI中的limits.h也有列示)。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)類型類型名稱名稱比特比特數(shù)數(shù)有效有效數(shù)字?jǐn)?shù)字?jǐn)?shù)值范圍數(shù)值范圍float單精度單精度326810-371038double雙精度雙精度64151610-30710308long double長雙精長雙精

37、度度80181910-4931104932 如:float是7位有效數(shù)字, float a=7758.521125;a的后3位不其作用,實(shí)際上輸出a=7758.520996。 double有效數(shù)字為15位,也有類似問題。 long double型有效數(shù)字為19位,用得很少,這里不作介紹。課件制作:劉達(dá)明課件制作:劉達(dá)明實(shí)型變量的定義與賦值、實(shí)型變量的定義與賦值第二節(jié)第二節(jié) 變量及其類型變量及其類型23 / 71 每個變量使用前必須定義,一般放在函數(shù)的開頭的聲明部分定義變量。如:定義: float a,b; double i,j; long double x,y; 賦

38、值: a=21.910; b=-20.09832; i=-30201.09282; j=90.987760900; printf(“a=%fn”,a); /* 輸出結(jié)果a=21.910000 */注意注意: 將一個float型數(shù)據(jù)賦給double型變量,有效數(shù)字決不會丟失。而將一個double型數(shù)據(jù)賦給float型變量,就可能丟失有效數(shù)字。 如:將實(shí)型常量7865.54986621116分別賦給實(shí)型變量a和b: float a; double b; 當(dāng)它賦給a時,只有前7位有效,即a=7865.549,后幾位不起作用。 當(dāng)它賦給b時,全部有效,即b= 7865.54986621116。(第二章

39、(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)課件制作:劉達(dá)明課件制作:劉達(dá)明實(shí)型數(shù)據(jù)的舍入誤差、實(shí)型數(shù)據(jù)的舍入誤差第二節(jié)第二節(jié) 變量及其類型變量及其類型24 / 71 由于實(shí)型變量是用有限的存儲單元存儲的,因此能提供的有效數(shù)字總是有限的,在有效位以外的數(shù)字將被舍去,由此可能會產(chǎn)生一些誤差。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)例例 2.5:main() float a,b; a=123456.789e5; b=a+20.0f; printf(“a=%fnb=%fn”,a,b);運(yùn)行

40、結(jié)果:運(yùn)行結(jié)果: a=12345678848.000000 b=12345678848.000000 輸出結(jié)果是a與b相等。雖然理論上b應(yīng)比a大20,應(yīng)為12345678920。而實(shí)型變量只能保證7位有效數(shù)字,后面的數(shù)字是無意義的,并不準(zhǔn)確地表示該數(shù)。 因此應(yīng)該避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減,否則就會“丟失”小的數(shù)。 同樣,計算1.0/3.0*3.0的結(jié)果并不等于1。課件制作:劉達(dá)明課件制作:劉達(dá)明 023-668341103 3、字符型變量、字符型變量第二節(jié)第二節(jié) 變量及其類型變量及其類型25 / 71 字符型變量的存放形式字符型變量的存放形式 字符型變量用來存放字符型常量存

41、放字符型常量。 一個字符變量只能存放一個字符,要存放字符串(包括若干字符)必須聲明字符數(shù)組。在所有編譯系統(tǒng)中,都規(guī)定用一個字節(jié)來存放一個字符,或者說一一個字符變量在內(nèi)存中占一個字節(jié)個字符變量在內(nèi)存中占一個字節(jié)。將一個字符常量放到一個字符變量中,實(shí)際上并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的相應(yīng)的ASCII碼放到存儲單元中。因此其存儲方式類似于整型變量。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)0c1=b1010010980c1=a101000197如:char c1=a,c2=b;/* a的ASCII為97 b的ASCII為98 */ A

42、SCII的取值范圍為0255的整型常數(shù),其中0127為基本ASCII碼,128255為擴(kuò)展ASCII碼。C語言規(guī)定,在0255范圍內(nèi),字符型與整型數(shù)據(jù)是等價的,是可以互相轉(zhuǎn)換的。 如:char a=0,b=97; int i=10,j=b;課件制作:劉達(dá)明課件制作:劉達(dá)明字符變量的定義與賦值字符變量的定義與賦值第二節(jié)第二節(jié) 變量及其類型變量及其類型26 / 71 字符型變量加上不同的修飾符,可以定義有符號和無符號兩種類型的字符型變量,其定義方式如下: char a,b,c; /* 定義變量a,b,c都為有符號字符型變量 */ unsigned char x,y,z;

43、 /* 定義變量x,y,z都為無符號字符型變量 */ 由于字符在計算機(jī)中以其ASCII碼方式表示,其長度為1個字節(jié)。因此有符號有符號字符型數(shù)據(jù)轉(zhuǎn)換成整型數(shù)據(jù)時其取值范圍為字符型數(shù)據(jù)轉(zhuǎn)換成整型數(shù)據(jù)時其取值范圍為-128127-128127,無符號字符型數(shù)據(jù)轉(zhuǎn)換無符號字符型數(shù)據(jù)轉(zhuǎn)換成整型數(shù)據(jù)時其取值范圍是成整型數(shù)據(jù)時其取值范圍是02550255。作為字符型本身輸出時,其ASCII碼范圍仍然是0255。也就是說,作為字符本身的定義沒有必要加作為字符本身的定義沒有必要加unsignedunsigned修飾符修飾符,而作為與整型數(shù)的轉(zhuǎn)換則非常有必要了。 字符變量的賦值:如:a=65; b=B; c=&a

44、mp;(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)例例2.6:main() char c1=a,c2=b; /* 等價于char c1=97, c2=98; */ c1=c1-32; c2=c2-32; printf(“%d,%cn”,c1,c1); printf(“%d,%cn”,c2,c2);輸出結(jié)果為: 65,A 66,B課件制作:劉達(dá)明課件制作:劉達(dá)明、三、 指向基本數(shù)據(jù)類型變量的指針變量指向基本數(shù)據(jù)類型變量的指針變量第二節(jié)第二節(jié) 變量及其類型變量及其類型27 / 71 1 1、地址和指針的概念、地址和指針的概念

45、在內(nèi)存區(qū)中,系統(tǒng)對每一個存儲單元(即每一個字節(jié))都有一個編號,這個編號就是“地址地址”。如右圖中的2000、2002、2004等。在地址所標(biāo)志的內(nèi)存單元中存放數(shù)據(jù)。 如定義int i=3,j=6,k=9;三變量,每個變量占2個字節(jié),系統(tǒng)編譯時2000和2001兩個單元分配給了變量i,因此2000和2001單元中存放數(shù)據(jù)3。 在程序中,一般是通過變量名來對內(nèi)存單元進(jìn)行存取操作,其實(shí)程序經(jīng)過編譯后已經(jīng)將變量名轉(zhuǎn)換為變量的地址變量名轉(zhuǎn)換為變量的地址,對變量值的存取都是通過地址進(jìn)行的對變量值的存取都是通過地址進(jìn)行的。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式

46、)變量變量i=3內(nèi)存用戶數(shù)據(jù)區(qū)內(nèi)存用戶數(shù)據(jù)區(qū)2000變量變量j=6變量變量k=9變量變量i_pointer2000200220043010000010010000000000000011000000000000011000000000課件制作:劉達(dá)明課件制作:劉達(dá)明接訪問方式:直接訪問方式:第二節(jié)第二節(jié) 變量及其類型變量及其類型28 / 71 直接訪問方式直接訪問方式是指按變量地址存取變量值按變量地址存取變量值的方式。如讀取i的值3,是根據(jù)變量名變量名與地址地址的對應(yīng)關(guān)系,找到變量i的地址2000,然后從2000開始的2個字節(jié)中取出數(shù)據(jù)數(shù)據(jù),即變量i的值3。如果輸入

47、數(shù)據(jù)時,則是將鍵盤輸入的值送到相應(yīng)地址的存儲單元中。間接訪問方式:間接訪問方式: 間接訪問方式間接訪問方式就是將變量的地址變量的地址存放到另一變量另一變量中。取數(shù)時,先從另一變量中找到原變量的地址,然后再從該地址中取出該變量的值。按C語言規(guī)定,可以在程序中定義整型變量、實(shí)型變量、字符型變量等,也可以定義一種特殊的變量,用它來存放地址。如:定義變量i_pointer用來存放整型變量i的地址2000,變量i_pointer被分配為3010和3011兩個字節(jié)的存儲單元??梢酝ㄟ^ i_pointer=&i 將i的地址2000賦給i_pointer變量。 使用間接方式取i的值就是:先找到存放“i

48、的地址”的變量i_pointer,從中取出i的地址2000,然后到2000、2001單元中取出i的值3。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)課件制作:劉達(dá)明課件制作:劉達(dá)明針指針第二節(jié)第二節(jié) 變量及其類型變量及其類型29 / 71 將數(shù)值3送到變量i中,有兩種方式: 將3送到變量i所標(biāo)志的單元中(2000和2001)。這是直接訪問方式。 將3送到變量i_pointer所“指向”的單元中(即所標(biāo)志的單元2000和2001)。所謂“指向”,就是通過地址來體現(xiàn)的。這是間接訪問方式。 由于通過地址能找到所需的變量單元,也可

49、以說地址地址“指向指向”該變量單元該變量單元,在C語言中,形象化地稱為“指針指針”,意思是通過它能找到以它為地址的內(nèi)存單元。指針就是地址指針就是地址,地址就是指針。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)20002000i_pointeri30103間接訪問:間接訪問:2000i3直接訪問:直接訪問:課件制作:劉達(dá)明課件制作:劉達(dá)明 023-668341102 2、變量的指針、變量的指針第二節(jié)第二節(jié) 變量及其類型變量及其類型30 / 71 一個變量的地址稱為該變量的“指針指針”。如2000是變量i的指針。指針就是地址,變量的指針變量的指針就是變量

50、的地址變量的地址。 存放變量地址(即指針)的變量,就是“指針變量指針變量”,它指向另一個變量。 注意:指針變量的值指針變量的值(即指針變量中存放的值)是指針指針。為了表示指針變量和它所指向的變量之間的聯(lián)系,在程序中用星號中用星號“* *”表示表示“指向指向”。如i_pointer就是一個指針變量,它存放變量i的指針,而*i_pointer是i_pointer所指向的變量。(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)200032000i_pointeri3010*i_pointer 指針是指向變量的地址,實(shí)質(zhì)上指針就是存貯單元的地址。指針變量就是專門存

51、放另一變量的的地址的變量。根據(jù)所指的變量類型不同,可以有整型指針(int *)、實(shí)型指針(float *)、字符型指針(char *)、void指針類型(void *)、結(jié)構(gòu)體指針(struct *)和共用體指針(union *)等。 可以看到*i_pointer也代表一個變量,它和變量i是同一回事。即賦值語句i=3;和*i_pointer=3;是等價的。課件制作:劉達(dá)明課件制作:劉達(dá)明 023-668341103 3、指針變量的定義、指針變量的定義第二節(jié)第二節(jié) 變量及其類型變量及其類型31 / 71(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式) C語

52、言規(guī)定所有變量在使用前必須指定數(shù)據(jù)類型,并按此分配內(nèi)存單元。指針變量不同于整型變量和其他類型的變量,它是專門存放地址的,必須將它定義為“指針變量”。定義指針變量的一般形式為: 數(shù)據(jù)類型名數(shù)據(jù)類型名 * *指針變量名指針變量名; ; 如:如:int i,j,int i,j,* *p1,p1,* *p2; p2; p1和p2可以指向變量i或j。 p1=&i; float a,b, float a,b,* *p3,p3,* *p4; p4; p3和p4可以指向變量a或b。 p3=&b; char c, char c,* *p5; p5; p5可以指向變量c。 p5=&c; C

53、規(guī)定使用&運(yùn)算符完成變量與指針變量的指向操作。定義指針變量時注意定義指針變量時注意: 指針變量前面的星號*表示該變量的類型為指針變量。特別強(qiáng)調(diào),指針名是p1,而不是*p1。 必須指定數(shù)據(jù)類型名。因?yàn)楦鞣N數(shù)據(jù)類型在內(nèi)存中所占的字節(jié)數(shù)不同。 一個指針變量只能指向一個類型的變量。 可以這樣理解:*p1是整型變量,如同定義i是整型變量一樣。而*p1是p1所指向的變量,p1是指針變量。課件制作:劉達(dá)明課件制作:劉達(dá)明 023-668341104 4、指針變量的引用、指針變量的引用第二節(jié)第二節(jié) 變量及其類型變量及其類型32 / 71(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類

54、型、運(yùn)算符及其表達(dá)式) 請牢記,指針變量中只能存放地址指針變量中只能存放地址(指針),不要將一個整型量(或其它任何非地址類型的數(shù)據(jù))賦給一個指針變量。與指針有關(guān)的兩個運(yùn)算符:&和*。 & &:取地址運(yùn)算符取地址運(yùn)算符;如:&a為變量a的地址。&運(yùn)算符只能作用于變量。 * *:指針運(yùn)算符指針運(yùn)算符,又稱“間接訪問”運(yùn)算符。*p表示指針變量p所指向的變量的存儲單元的值。&b&bP2b* p2&a&ap1a* p1例例 2.7 通過指針變量訪問整型變量通過指針變量訪問整型變量 main() int a=100,b=10,*p1,

55、*p2; /* *p1定義指針變量*/ p1=&a; /*把變量a的地址賦給指針變量p1*/ p2=&b; /*把變量b的地址賦給指針變量p2*/ printf(“%d,%dn”,a,b); printf(“%d,%dn”,*p1,*p2); /* *p1為a的值 */運(yùn)行結(jié)果為:100,10 100,10課件制作:劉達(dá)明課件制作:劉達(dá)明例 2.82.8: : 輸入輸入a a和和b b兩個整數(shù),按先大后小的順序輸出兩個整數(shù),按先大后小的順序輸出a a和和b.b.第二節(jié)第二節(jié) 變量及其類型變量及其類型33 / 71(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)

56、算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)程序程序1: main() int a,b,*p1,*p2,*p; scanf(“%d,%d”,&a,&b); p1=&a; p2=&b; if (a b) p=p1; p1=p2; p2=p; printf(“na=%d,b=%dn”,a,b); printf(“max=%d,min=%dn”,*p1,*p2);運(yùn)算結(jié)果為: 10,56 (按回車鍵) a=10,b=56 max=56,min=10程序程序2: main() int a,b, max,min; scanf(“%d,%d”,&a,&

57、b); if (a b) max=b; min=a; printf(“na=%d,b=%dn”,a,b); printf(“max=%d,min=%dn”,max,min);運(yùn)算結(jié)果為: 10,56 (按回車鍵) a=10,b=56 max=56,min=10課件制作:劉達(dá)明課件制作:劉達(dá)明 023-668341105 5、指針的優(yōu)缺點(diǎn)、指針的優(yōu)缺點(diǎn)第二節(jié)第二節(jié) 變量及其類型變量及其類型34 / 71(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式) 指針是一種特殊的數(shù)據(jù)類型,在其它語言中一般沒有。指針是C語言中的一個重要的概念,也是C語言的一個重要特色。

58、指針有如下特點(diǎn): 提高程序效率; 能有效地表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu); 能動態(tài)分配內(nèi)存; 能方便地使用字符串; 能有效而方便地使用數(shù)組; 能直接處理內(nèi)存; 在調(diào)用函數(shù)時,能得到多于一個的值等。 掌握指針的應(yīng)用,可以使程序簡潔、緊湊、高效。每一個學(xué)習(xí)和使用C語言的人,都應(yīng)當(dāng)深入地學(xué)習(xí)和掌握指針??梢哉f,不掌握指針,就是沒有掌握C的精華。 指針使用非常靈活,對熟悉的程序員來說,可以利用它編寫出很有特色的、質(zhì)量優(yōu)良的,實(shí)現(xiàn)許多用其他高級語言難以實(shí)現(xiàn)的功能。 但也十分容易出錯,而且這種錯誤往往難以發(fā)現(xiàn)。如:未對指針變量p賦值,就向*p賦值,這就可能破壞了有用的單元內(nèi)容。 指針是有利有弊的工具,在使用時要十分謹(jǐn)

59、慎,要多上機(jī),弄清一些細(xì)節(jié),并積累經(jīng)驗(yàn)。課件制作:劉達(dá)明課件制作:劉達(dá)明、四、 空類型空類型(void)(void)和和voidvoid指針類型指針類型第二節(jié)第二節(jié) 變量及其類型變量及其類型35 / 71(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式) 空類型字節(jié)長度為空類型字節(jié)長度為0,主要有兩個用途:一是明確地表示一個函數(shù)不返回任何值;一是產(chǎn)生一個同一類型指針(可根據(jù)需要動態(tài)分配給其內(nèi)存)。 將一個函數(shù)定義為空類型(void),并不是指函數(shù)沒有類型,而是不用該函數(shù)返回值。在函數(shù)中,凡是不要求返回函數(shù)值的函數(shù),一般應(yīng)定義為v

60、oid類型,以避免程序出錯。 如:void display() printf(“This is demo program. ”); ANSI新標(biāo)準(zhǔn)增加了“void”指針類型,該指針不指向任何類型的數(shù)據(jù)。C規(guī)定用動態(tài)存儲分配函數(shù)時返回void指針類型,用來指向一個抽象類型的數(shù)據(jù),在將它的值賦給另一指針變量時要進(jìn)行強(qiáng)制類型的轉(zhuǎn)換,使之適合該變量類型。 如: char *p1; /* p1被定義為字符類型指針變量 */ void *p2; /* p2被定義為空類型指針變量 */ p1=(char *)p2; /* 將p2的值強(qiáng)制轉(zhuǎn)換成char *類型。課件制作:劉達(dá)明課件制作:劉達(dá)明、五、 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算第二節(jié)第二節(jié) 變量及其類型變量及其類型36 / 71(第二章(第二章 C語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式)語言的數(shù)據(jù)類型、運(yùn)算符及其表達(dá)式) 整型(

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論