C語(yǔ)言數(shù)據(jù)類(lèi)型、存儲(chǔ)類(lèi)型_第1頁(yè)
C語(yǔ)言數(shù)據(jù)類(lèi)型、存儲(chǔ)類(lèi)型_第2頁(yè)
C語(yǔ)言數(shù)據(jù)類(lèi)型、存儲(chǔ)類(lèi)型_第3頁(yè)
C語(yǔ)言數(shù)據(jù)類(lèi)型、存儲(chǔ)類(lèi)型_第4頁(yè)
C語(yǔ)言數(shù)據(jù)類(lèi)型、存儲(chǔ)類(lèi)型_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上一、數(shù)據(jù)類(lèi)型基本類(lèi)型:int、char、int、float、double構(gòu)造類(lèi)型:數(shù)組(一維數(shù)組、二維數(shù)組、指針數(shù)組、函數(shù)指針數(shù)組、結(jié)構(gòu)體數(shù)組)、結(jié)構(gòu)體、共用體指針:一維指針、二維指針、數(shù)組指針、函數(shù)指針、結(jié)構(gòu)體指針空類(lèi)型:void,該類(lèi)型也叫缺省型,用于描述值為空集,主要用于說(shuō)明不返回值的函數(shù)或指向任一類(lèi)型的指針等1、32位計(jì)算機(jī),各種數(shù)據(jù)類(lèi)型所占字節(jié)數(shù)是: char = 1;short = 2;int = 4;long = 4;float = 4;double = 8(實(shí)型數(shù)據(jù)的存儲(chǔ)方式不同于其他基本數(shù)據(jù)類(lèi)型)2、bool類(lèi)型 bool類(lèi)型數(shù)據(jù)的值,是真或者非真,

2、-即:0/1(非0即為真) 定義時(shí)需加上:#include 用的時(shí)候不需要專(zhuān)門(mén)聲明。3、char型數(shù)據(jù) 字符型數(shù)據(jù),就是占用1個(gè)字節(jié),8位,賦值范圍要注意 unsigned char(無(wú)符號(hào)) signed char (有符號(hào)) 如果給char型數(shù)據(jù)賦值超過(guò)范圍,則會(huì)溢出。溢出原則,“保留低位,舍棄高位”4、字符常量 char a = a和char a = 97等價(jià),字符常量a的ASCII碼是975、字符串常量 定義:用雙引號(hào)括起來(lái)的字符,就是字符串常量。 char *p = “hello”; “helllo”“你好嗎,世界!” 每個(gè)字符串常量后面都會(huì)有一個(gè)“*0” 0用來(lái)表示字符串結(jié)束6、d

3、efine與typedef(注意兩者格式的區(qū)別) typedef是關(guān)鍵字,為已有類(lèi)型取別名(如typedef unsigned int unit) define是宏定義,僅僅進(jìn)行簡(jiǎn)單的文本替換(#define TYPE 100) 舉例:#define unit_p int* unit_p a,b表示的是int *a,b;(b為int型) typedef int * unit_p unit_p a,b;表示的是int *a;int *b;#include#defineN3.0e-23#defineM950intmain(intargc,constchar*argv)doublea;scanf(%

4、lf,&a);printf(%.2en,a*M/N);return0;7、sizeof(關(guān)鍵字) 這個(gè)是計(jì)算數(shù)據(jù)占用字節(jié)數(shù)的運(yùn)算符,只針對(duì)數(shù)據(jù)類(lèi)型,不針對(duì)變量。 返回值:是括號(hào)內(nèi)數(shù)據(jù)占用的字節(jié)數(shù)。 比如:int a = 5;則sizeof(a)和sizeof(int) = 4;sizeof(short int)=2;32位系統(tǒng)中,指針是占4個(gè)字節(jié) 利用指針判斷所使用系統(tǒng)是多少位的系統(tǒng) int *p = NULL;printf(%dn,sizeof(p);32位系統(tǒng)中,指針是占4個(gè)字節(jié);64位系統(tǒng)中,指針是占8個(gè)字節(jié)8、帶參宏定義define 對(duì)于帶參宏定義不僅應(yīng)在參數(shù)兩側(cè)加括號(hào),還應(yīng)在整個(gè)符號(hào)

5、串外加括號(hào),才能保證大部分情況下不出錯(cuò)。而有些時(shí)候就算已經(jīng)這樣做了,還是不能得到我們想要的結(jié)果。#include #define SQ(y) (y)*(y)int main() int i = 1; while(i = 5) printf(%d ,SQ(i +); return 0;結(jié)果:1 9 25#include int SQ(int y) return (y * y);int main() int i = 1; while(i = 5) printf(%d ,SQ(i +); return 0;結(jié)果:1 4 9 16 25以上兩段程序說(shuō)明了帶參宏定義和函數(shù)之間是有很大差別的編譯器是在程序

6、的預(yù)編譯階段對(duì)宏進(jìn)行處理的,主要是用預(yù)編譯指令來(lái)替換源文件中的宏。(1)宏會(huì)在編譯器在對(duì)源代碼進(jìn)行編譯的時(shí)候進(jìn)行簡(jiǎn)單替換,不會(huì)進(jìn)行任何邏輯檢測(cè),即簡(jiǎn)單代碼復(fù)制而已。(2)宏進(jìn)行定義時(shí)不會(huì)考慮參數(shù)的類(lèi)型。(3)參數(shù)宏的使用會(huì)使具有同一作用的代碼塊在目標(biāo)文件中存在多個(gè)副本,即會(huì)增長(zhǎng)目標(biāo)文件的大小。(4)參數(shù)宏的運(yùn)行速度會(huì)比函數(shù)快,因?yàn)椴恍枰獏?shù)壓棧/出棧操作。(5)參數(shù)宏在定義時(shí)要多加小心,多加括號(hào)。(6)函數(shù)只在目標(biāo)文件中存在一處,比較節(jié)省程序空間。(7)函數(shù)的調(diào)用會(huì)牽扯到參數(shù)的傳遞,壓棧/出棧操作,速度相對(duì)較慢。(8)函數(shù)的參數(shù)存在傳值和傳地址(指針)的問(wèn)題,參數(shù)宏不存在。二、存儲(chǔ)類(lèi)型存儲(chǔ)類(lèi)型

7、:auto、register、static、extern全局變量:存放在靜態(tài)區(qū)局部變量:靜態(tài)區(qū)、棧區(qū)、堆區(qū)1、局部變量 關(guān)鍵字:auto,它的作用域:就是它所在函數(shù)的花括號(hào)內(nèi)部。 定義:定義在函數(shù)內(nèi)部,隨著函數(shù)的執(zhí)行而分配棧區(qū),隨著函數(shù)的調(diào)用產(chǎn)生,隨著函數(shù)的退出而消失。 當(dāng)一個(gè)自動(dòng)變量沒(méi)有被初始化,它的值是默認(rèn)的隨機(jī)值。 局部變量定義在一個(gè)函數(shù)內(nèi)部,那么它只在這個(gè)函數(shù)內(nèi)部有效。2、全局變量 不能用auto來(lái)修飾,不是自動(dòng)變量 定義:定義在函數(shù)外部,一般是定義在文件頭的位置。 如果初始化了全局變量,那么它會(huì)被分配到data段,data段的數(shù)據(jù)會(huì)被原樣保存到磁盤(pán)中。 #include int s;

8、/全局變量未初始化,會(huì)被分配到BSS段,該段在程序加載初期會(huì)被自動(dòng)清零。所以沒(méi)初始化前,它的默認(rèn)值是0。 int sd = 1024;/如果初始化了全局變量,那么它會(huì)被分配到data段,data段的數(shù)據(jù)會(huì)被原樣保存到磁盤(pán)中。 /全局變量在程序加載時(shí)就被初始化 /全局變量初始化后在內(nèi)存中分配了固定的地址; int main() int a = 1;/局部變量在程序調(diào)用的時(shí)候才會(huì)被初始化; /局部變量調(diào)用時(shí),被分配地址是隨著每次調(diào)用、釋放變化的。 return (0); 3、變量作用域 局部變量的名稱(chēng)作用域在一個(gè)花括號(hào)之間 作用域小的名稱(chēng),將覆蓋掉作用域大的名稱(chēng) 一個(gè)工程里不能有兩個(gè)重名的全局變量

9、4、static靜態(tài)存儲(chǔ)類(lèi)型 用static聲明一個(gè)靜態(tài)變量,那么這個(gè)靜態(tài)變量和全局變量同等對(duì)待,放到靜態(tài)區(qū),在程序被加載時(shí)被初始化,之后不再執(zhí)行初始化;靜態(tài)局部變量和全局變量,只是作用域和名稱(chēng)不一樣,其它的屬性都一樣(參照上一文檔的圖)5、用static聲明一個(gè)全局變量的用法 extern聲明引用一個(gè)外部變量。比如:兩個(gè)程序文件,a文件可以通過(guò)extern聲明引用b文件里面的變量,在編譯的時(shí)候要將兩個(gè)程序文件同時(shí)編譯。 static int a=0;用static修飾一個(gè)全局變量,那么這個(gè)全局變量的作用域僅限于本文件;修飾一個(gè)函數(shù)的話,效果相同??偨Y(jié):用static修飾一個(gè)局部變量,那么這個(gè)局部變量的作用相當(dāng)于全局變量; 用static修飾一個(gè)全局變量,那么這個(gè)全局變量?jī)H限于它所在文件使用,而不能通過(guò)extern聲明而被另外的文件使用; 用static修飾一個(gè)函數(shù),那么這個(gè)函數(shù)的作用域僅限于它所在的文件,而不能通過(guò)extern聲明而被另外的文件使用; extern的作用:可以聲明函數(shù),也可以聲明變量。它的作用是,通過(guò)extern聲明后,即使本文件中沒(méi)有該變量和

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論