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