指標與陣列的對比

2021-04-09 01:39:28 字數 613 閱讀 1584

、陣列的位址與容量在生命期內保持不變,只有內容可以改變;指標可以隨時指向任意型別的記憶體塊.

2、不能對陣列名進行直接複製與比較。如不能用語句b=a,把陣列a的內容複製給陣列b.否則產生編譯錯誤.

應該用strcpy,同理比較b和a的內容是否相同,不能用if(b==a)來判斷,應該用標準庫函式strcmp進行

比較.語句p = a 並不能把a的內容複製給指標p,而是把a的位址賦給了p。要想複製a的內容,可以先用庫函式

malloc為p申請一塊容量為strlen(a) + 1 個字元的記憶體,再用strcpy進行字串複製。同理,語句

if(p==a) 比較的不是內容而是位址,應該用庫函式strcmp來比較。

3、用運算子sizeof可以計算出陣列的容量(位元組數)。如: char a = "hello world"; char *p = a;

sizeof(a)的值是12,但sizeof(p)的值卻是4。這是因為sizeof(p)得到的是乙個指標變數的位元組數,

相當於sizeof(char *),而不是p所指的記憶體容量。c++/c語言沒有辦法知道指標所指的記憶體容量,除

非在申請記憶體時記住它。

4、如果函式的引數是乙個指標,不要指望用該指標去申請動態記憶體。 

C 探幽 指標與陣列的對比

陣列要麼被建立在靜態儲存區 如全域性陣列 要麼被建立在棧上 區域性陣列 陣列名對應著一塊記憶體,而不是指向一塊記憶體,其位址與容量保持不變,只有陣列的內容可以改變。指標可以隨時指向任意型別的記憶體塊,其特徵是可變。因此經常使用指標操作動態記憶體塊,比陣列靈活,卻也更危險。char p hello 其...

指標和陣列的對比

指標和陣列在不少地方可以互換使用,但兩者並不等價。陣列名對應著 而不是指向 一塊記憶體,其位址和大小在生命週期內保持不變,只有陣列的內容可以改變 而指標變數則是乙個變數,它可以存放任意相同資料型別變數的位址值,可以隨時指向其他記憶體塊,所以指標比陣列更加靈活。預防指標錯誤方法 一般指標 1 宣告指標...

7 3 指標與陣列的對比

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