本書覆蓋了C++的所有基礎(chǔ)知識(shí),主要內(nèi)容包括:C語(yǔ)言概述、數(shù)據(jù)類型與表達(dá)式、流程控制語(yǔ)句、數(shù)組、函數(shù)、結(jié)構(gòu)體育簡(jiǎn)單鏈表、類和對(duì)象、繼承與多態(tài)性、友元函數(shù)與運(yùn)算符重載、模板與異常處理、輸入/輸出流。內(nèi)容深入淺出,典型實(shí)例講解精煉,并配有相應(yīng)練習(xí)題。
更多科學(xué)出版社服務(wù),請(qǐng)掃碼獲取。
《普通高等教育'十二五'規(guī)劃教材:C++程序設(shè)計(jì)教程》可作為高等院校C++語(yǔ)言程序設(shè)計(jì)的教材,也可作為程序設(shè)計(jì)愛(ài)好者的參考用書。
類型定義不同于結(jié)構(gòu)體類型說(shuō)明,類型定義的本質(zhì)是對(duì)一個(gè)已存在的類型重新命名,并不是定義新的數(shù)據(jù)類型,也不能定義變量。
6.2動(dòng)態(tài)空間
6.2.1 動(dòng)態(tài)空間的分配
通常情況下,給變量分配內(nèi)存空間時(shí)都是編譯器根據(jù)變量的類型預(yù)先分配的,這種內(nèi)存分配稱為靜態(tài)存儲(chǔ)分配。但有些操作不能預(yù)先確定需要分配多少內(nèi)存,只有在運(yùn)行程序時(shí),系統(tǒng)根據(jù)運(yùn)行要求進(jìn)行內(nèi)存分配,這種內(nèi)存分配方法稱為動(dòng)態(tài)存儲(chǔ)分配。
在C++程序中可以通過(guò)new運(yùn)算符動(dòng)態(tài)申請(qǐng)空問(wèn),new的運(yùn)算結(jié)果是動(dòng)態(tài)申請(qǐng)空問(wèn)的首地址。動(dòng)態(tài)創(chuàng)建的內(nèi)存空問(wèn)本身沒(méi)有名字,可通過(guò)指向該內(nèi)存空間的指針來(lái)操作。
用new運(yùn)算符動(dòng)態(tài)申請(qǐng)空間的格式有以下3種。
(1)動(dòng)態(tài)申請(qǐng)一個(gè)變量空間,其一般格式如下:
指針變量=new數(shù)據(jù)類型;
動(dòng)態(tài)空間分配不成功時(shí),指針變量的值為0;若空間申請(qǐng)成功,指針變量保存該空間的地址。數(shù)據(jù)類型可以是整型、字符型和結(jié)構(gòu)體類型等,指針變量的類型必須與所分配動(dòng)態(tài)內(nèi)存的類型一致。例如:
int*pointer;pointer=new int;
(2)動(dòng)態(tài)申請(qǐng)一個(gè)變量空間,并為其賦初始值,一般格式如下:
指針變量=new數(shù)據(jù)類型(數(shù)值);
數(shù)據(jù)類型只能是基本數(shù)據(jù)類型,括號(hào)內(nèi)的數(shù)值為所分配內(nèi)存空間的初始化值。例如:
float*pointer;
pointer=new float(3.3);
(3)動(dòng)態(tài)申請(qǐng)一維數(shù)組空間,其一般格式如下:
指針變量=new數(shù)據(jù)類型;
動(dòng)態(tài)申請(qǐng)數(shù)組空問(wèn)時(shí),數(shù)組大小一般為整型,表示數(shù)組元素的個(gè)數(shù),可以是變量;指針變量保存該空間的首地址。例如:
char*pointer; pointer=new char;
再如:
char*p4,*p2,*p3;
int*q1,*q2;
P1=new char; //A
p2=new char('a'); //B
p3=new char; //C
q1=new int; //D
q2=new int(123); //E
A行動(dòng)態(tài)申請(qǐng)了一個(gè)字符型內(nèi)存空間,使p1指向它;C行動(dòng)態(tài)申請(qǐng)了10個(gè)元素的數(shù)組空間,使p3指向它;D行動(dòng)態(tài)申請(qǐng)了一個(gè)整型內(nèi)存空間,并將空間的首地址賦給q1;B行和E行在動(dòng)態(tài)申請(qǐng)空間的同時(shí)初始化。如需將空間中的值輸出,則可以通過(guò)p2指針來(lái)間接操作。