- 什么叫分配內(nèi)存?什么叫釋放內(nèi)存?
- 操作系統(tǒng)將某一塊兒內(nèi)存空間的使用權(quán)利分配給程序。
- 操作系統(tǒng)把分配給該程序的內(nèi)存空間的使用權(quán)利收回,該程序就不能再使用這一塊兒內(nèi)存空間,這叫釋放內(nèi)存。
- 程序?qū)?nèi)存空間使用權(quán)利交還給操作系統(tǒng),程序不再使用。
- 附注:釋放內(nèi)存不是把該內(nèi)存內(nèi)容清零。
變量為什么要初始化?
不初始化的話,則是垃圾值。詳細(xì)說(shuō)明系統(tǒng)是如何執(zhí)行 int i = 5;這個(gè)語(yǔ)句的
1)VC++6.0 請(qǐng)求操作系統(tǒng)為i分配內(nèi)存空間
2)操作系統(tǒng)會(huì)在內(nèi)存中尋找一塊兒空閑的區(qū)域,把該區(qū)域當(dāng)做i來(lái)使用
3)VC++6.0 會(huì)把i和這塊內(nèi)存空間關(guān)聯(lián)起來(lái),今后對(duì)字母i操作,就是對(duì)這塊兒空閑的區(qū)域操作。
4)把5存儲(chǔ)到字母i所關(guān)聯(lián)的內(nèi)存空間
附注:所謂內(nèi)存區(qū)域也就是內(nèi)存的一塊存儲(chǔ)單元。請(qǐng)列出C語(yǔ)言的所有基本數(shù)據(jù)類型
int ? long int ? short int ? char ? float? double在printf中int用%d,請(qǐng)問(wèn)long int,char,double,float分別都用什么?
| 類型 | 符號(hào) |
|---|---|
| long | %ld |
| char | %c |
| double | %lf |
| float | %f |
函數(shù)的優(yōu)點(diǎn)是什么?
1)避免重復(fù)性操作
2)有利于程序的模塊化談?wù)勀銓?duì)函數(shù)的理解
什么是指針,什么是地址?什么是指針變量?三者之間什么關(guān)系?
地址是內(nèi)存單元的編號(hào),指針就是地址,指針和地址是同一個(gè)概念。
指針變量是存放內(nèi)存地址(內(nèi)存單元編號(hào))的變量。
指針變量和指針是2個(gè)完全不同的概念,只不過(guò)通常把指針變量簡(jiǎn)稱為指針。寫(xiě)出靜態(tài)變量和動(dòng)態(tài)變量的異同。
- 相同點(diǎn):
都需要分配內(nèi)存 - 不同點(diǎn):
靜態(tài)變量
是由系統(tǒng)自動(dòng)在棧中分配,自動(dòng)釋放,程序員無(wú)法在程序運(yùn)行過(guò)程中手動(dòng)分配 和釋放。只有函數(shù)終止的時(shí)候,靜態(tài)變量的存儲(chǔ)空間就會(huì)被系統(tǒng)自動(dòng)釋放。
動(dòng)態(tài)變量
由程序員手動(dòng)分配,手動(dòng)釋放。程序員可以在程序運(yùn)行的過(guò)程當(dāng)中手動(dòng) 分配 & 釋放