操作符 new
c++ 操作符 new 可以用來動態儲存分配,該操作符返回 乙個指向所分配空間的指標。 例如, 給乙個整數分配儲存空間,可以使用下面的語句。
int *y;
當需要使用該整數時,可以使用如下語法來分配儲存空間:
y = new int;
操作符new 分配了一塊能儲存乙個整數的空間, 並將指向該空間的指標返回給y, y 是對整數指標的引用,而*y則是對整數本身的引用。為了在剛分配的空間中儲存乙個整數值, 比如 20,可以使用如下語法:
*y =20;
三步以整合,可以寫作:
int *y = new int(20);
一維陣列:
為了在執行時建立乙個一維浮點陣列x, 首先必須把x說明成乙個指向float的指標,然後為陣列分配足夠的空間。例如, 乙個大小為n的一維浮點陣列可以按如下方式來建立:
float *x=new float [n];
操作符new分配n個浮點數所需要的空間,並返回指向第乙個浮點數的指標。可以使用如下語法來訪問每個陣列元素:x[0],x[1],x[n-1] 等。
異常處理
在執行語句
float *x = new float [n];
時,計算機有時會出現不能分配足夠的空間,這是會報異常 (exception). 可以採用try-catch 結構來捕獲 new 引發的異常:
# include
# include
float *x
trycatch(xalloc)
操作符 delete
動態分配的儲存空間不再需要時應該被釋放,所釋放的空間可重新用來動態的建立新的結構。下面的語句是用來釋放分配給*y的空間以及一維陣列x:
delete y;
delete x;
二維陣列
c++中的二維陣列的動態分配問題是乙個『不太容易的事情『。二維陣列的儲存結構是下圖這個樣子。
先寫**吧,隨後補圖,哈哈哈!
templatebool make2darray(t **&x, int rows, int cols)
{ try{
//建立行指標
x = new t *[rows];
// 為每一行分配空間
C語言動態儲存分配
在陣列一章中,曾介紹過陣列的長度是預先定義好的,在整個程式中固定不變。c語言中不允許動態陣列型別。例如 int n scanf d n int a n 用變數表示長度,想對陣列的大小作動態說明,這是錯誤的。但是在實際的程式設計中,往往會發生這種情況,即所需的記憶體空間取決於實際輸入的資料,而無法預先...
c 學習之動態儲存空間分配
無法在編譯時分配空間,只能在程式執行時分配空間。new 用於分配空間,它的返回值是乙個指標,指向所分配的空間 delete 用於釋放空間 對整數進行動態空間分配 1.宣告乙個整形指標 int y 2.為這個整數動態分配儲存空間 操作符new分配了一塊能夠儲存乙個整數的空間,並將該空間的指標賦給y y...
C 動態儲存空間的分配和釋放
使用new申請空間 特點 1 沒有名字,只能通過指標間接訪問它們。2 從堆中申請空間 分類 變數 語法 指標變數 new 型別名 delete 指標變數 舉例 int p p new int delete p 初始化 p 90 p new int 99 一維陣列 語法 指標變數 new 型別名 下標...