C 學習 之 指標及動態記憶體分配(筆記)

2022-08-21 02:51:09 字數 1144 閱讀 9065

簡單來說,指標是儲存記憶體位址的變數。當我們宣告了乙個指標變數後,使用該指標時系統會根據指標內的位址索引記憶體塊,讀取記憶體內的值。指標因為是用來存位址的,所以一般固定長度為4個位元組。void指標指向記憶體塊的指標。

指標的定義示例:

int a=0

;int *pointer_a=&a;

在編寫程式時我們可以使用&(引用運算子或位址運算子)獲取變數或常量的位址,例如上例中獲取a變數位址就是用&a。對於指標來說指標本身儲存位址,加上*(解除引用運算子)讀取該位址下的值。如上例,pointer_a存放的就是a的位址,*pointer_a就是讀取a的值。

和陣列具有相似之處,指標也可以進行位址運算。

我們可以用指標遍歷陣列試試:

int array[5]=;

int *p=array;//

array存放的為陣列的第乙個元素的位址

for(int i=0;i<5;i++)

new可以申請分配乙個記憶體塊(申請不一定會成功受限於系統的狀態),如果成功則返回指向乙個指標,指向分配的記憶體,否則會出現異常。delete用於釋放new所分配的空間,當我們使用new分配的空間不在使用時,一定要及時釋放否則會拖慢系統。

動態記憶體分配示例:

int* p, * p_copy, number = 0;

cout << "請輸入需要存放的整數數量:";

cin >> number;

p = new int[number];//根據需要動態分配記憶體空間

p_copy = p;//儲存p的初始位址

cout << "請輸入各整數(用空格隔開):";

for (int i = 0; i < number; i++)//輸入各整數

for (int i = 0; i < number; i++)//輸出動態分配的空間內的各整數值

catch

(bad_alloc)

或者使用new(nothrow),在分配失敗時返回null。

例如:int *p=new(nothrow)int [0x1fffffff

];if(p)//

檢查p是否為空

else

cout

<<"

記憶體分配失敗,程式退出

"<

指標 動態記憶體分配

c 中的動態記憶體分配機制 c 中使用new和delete來完成在堆上對動態記憶體的分配和釋放。注.所有指標都應該被初始化 如果指標指向的動態記憶體被釋放或沒有指向合法的位址,就應該將指標設定為nullptr,否則記憶體洩漏 變數 double pvalue pvalue new double pv...

C之動態記憶體分配

在編寫程式時,通常並不知道需要處理的資料量,或者難以評估所需處理資料量的變動程度。在這種情況下,要達到有效的資源利用,必須在執行時動態地分配所需記憶體,並在使用完畢後盡早釋放不需要的記憶體,這就是動態記憶體管理原理。參考文章 1 c語言動態記憶體管理和動態記憶體分配 標準庫stdlib.h提供以下四...

c語言動態記憶體分配 C 動態記憶體分配

動態記憶體分配 雖然通過陣列就可以對大量的資料和物件進行有效地管理,但是很多情況下,在程式執行之前,我們並不能確切地知道陣列中會有多少個元素。這種情況下,如果陣列宣告過大,就會造成浪費 宣告過小,就會影響處理。在c 中,動態記憶體分配技術可以保證程式在執行過程中按照需要申請適量記憶體,使用後釋放,從...