陣列與指標記憶體比較注意

2021-05-11 13:13:25 字數 671 閱讀 7832

陣列char *a=「hello」;

指標char *p=「hi」;

a是整個char的首位址,是個常量!對a的賦值是錯的!只可以對其內容進行改變!

且sizeof(a)=6;

a大小固定為6,不可再改變了!

注意當陣列作為函式的引數進行傳遞時,該陣列自動退化為同型別的指標。

不論陣列 a 的容量是多少,sizeof(a)始終等於 sizeof(char *)。

其實質是void func(char a[100])

p是個位址的變數,它可以改變!sizeof(p)=2;

char *q="what";

p=q;

則p位址(=q位址)指向了q位址內容!

不可單獨對p[2]......賦值!

..........................完善中............................

指標的賦值注意:不能呼叫函式引數進行指標的賦值,呼叫引數都是區域性變數,退出便釋放了!

void getmemory(char *p, int num)

void test(void)

如上str依舊==null

若真要用就用函式返回值進行,如下: 但注意,char *getmemory3(int num)

void test3(void)

記憶體與指標 陣列與指標

陣列指標 行指標 型別識別符號 變數名 個數 陣列指標指向乙個提取的陣列,本質為指標 定義 int p n p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p 1時,p要跨過n個整型資料的長度。陣列指標的步長必須和它指向的二維陣列的列長相同!p 2 相當...

C 指標陣列與陣列指標的比較

test1.cpp 定義控制台應用程式的入口點。最簡單的辨別方式就是看函式名前面的指標號 有沒有被括號 包含,如果被包含就是函式指標,反之則是指標函式。include stdafx.h include iostream using namespace std void main int p 5 陣列...

指標與陣列的比較

c c 程式中,指標和陣列在不少地方可以相互替換著用,讓人產生一種錯覺,以 為兩者是等價的。陣列要麼在靜態儲存區被建立 如全域性陣列 要麼在棧上被建立。陣列名對應著 而不是指向 一塊記憶體,其位址與容量在生命期內保持不變,只有陣列的內容可以改變。指標可以隨時指向任意型別的記憶體塊,它的特徵是 可變 ...