C 陣列 指標 動態記憶體分配

2022-08-14 03:00:12 字數 1841 閱讀 4610

#includeusing

namespace

std;

void print(int n,int a[10])

cout

<

}}int

main(),,};

print(

3,k);//

傳入二維陣列的首位址

}//另外函式定義時也可以這樣定義 void print(int n,int *a[10]),代表a是乙個指向二維陣列的指標

和一維陣列作為函式的引數一樣,遵循的原則是形參的格式和實參的格式相同,形參是二維陣列的首位址,則呼叫函式的時候傳入函式的也是二維陣列的首位址。

const int * point

可以按照「斷句」的方法來看  ( (const int) * point )指的是指向const int (int常量)的指標

int * const point 同樣,「斷句」為( (int * ) (const point ) )宣告的是乙個指向int型變數的const 指標,即常指標

綜上,const貌似總是「修飾」緊跟其後的名稱

一般的指標都會宣告指標的型別,或是int型,或是char型,然而有一種特殊的void型別指標

void型別指標可以儲存任意型別的資料位址,通過顯示的轉換,可以通過指標訪問任意型別的資料

#includeusing

namespace

std;

intmain()

空指標(區別於空型別指標)可以通過0或者null來初始化,null在很多標頭檔案中都會有巨集定義,定義成0

#includeusing

namespace

std;

intmain();

int line2=;

int line3=;

int *point[3]=;

//(int * ) point [3]

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

cout

point [ i ] [ j ]的語法格式和二維陣列訪問的格式完全相同,但是二者實質上有著明顯的差異

#includeusing

namespace

std;

intmain(),,};

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

cout

兩種語法都使用了二維陣列的訪問方式,但是實質上訪問的過程完全不同

宣告指向函式的指標語法

資料型別 ( * 函式指標名)(形參表)
有時候多次定義同乙個型別的指向函式的指標會很繁瑣,這個時候可以使用typedef來定義

typedef int (* function)(double

);function a;

//function此時成為了乙個型別名

function b;

………………

int (* function)(double

)………………

int a(double

b)funtion=a;

double c=9.001

;function(c);

//這個時候,function是具體的指向函式的指標

對於物件,0初始化和不初始化的效果是一樣的,都是使用預設的建構函式。也許可以把0初始化看作是系統指定變數對應的建構函式?

在釋放用new建立的陣列的時候,需要使用 delete [ ]指標名來釋放陣列空間

指標 動態記憶體分配

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

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

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

C和指標 動態記憶體分配

void malloc size t size 分配所需的記憶體空間,並返回乙個指向它的指標。記憶體塊的大小,以位元組為單位。void calloc unsigned int num,unsigned int size 功能 在記憶體的動態儲存區中分配num個長度為size的連續空間,函式返回乙個指...