C語言中指標和陣列的區別

2022-02-16 02:01:55 字數 788 閱讀 7193

看《c專家程式設計》一書,看到陣列與指標並不相同一章,遂做了一段測試:

**:

#include #include int main(void)

輸出:

可以看到這樣的輸出,結果很顯然:

第乙個輸出的值,0028ff24,應該是符號表中p的位址。

第二個值,00403000,是位址0028ff24中儲存的值,也就是指標p所指向的位址。

第三個值,可以看到和第二個值是一樣的,也就是說字串指標p所指向的內容的起始位址為00403000,同樣也驗證了之前所說的。

在此總結一下指標與陣列的區別:

(1)指標儲存資料的位址(準確的說應該是起始位址),而陣列儲存資料。

(2)指標間接訪問資料,首先獲取指標的內容(該內容就是實際資料的位址),然後以之為位址,從這個位址提取資料。如果指標有乙個下標[i],那就把指標的內容加上i作為位址,從中提取資料。而陣列則直接訪問資料,a[i]是簡單的以a+i為位址取得資料。

(3)指標用於動態結構資料,而陣列用於儲存固定數目且資料型別相同的元素。

(4)指標相關的函式有malloc與free,而陣列隱式分配和刪除。

(5)指標一般指向匿名資料,而陣列自身即為資料名。

指標和陣列都可以通過定義時使用字串常量進行初始化,但是兩者是有區別的:

在ansi c中,初始化指標時所建立的字串常量通常是唯讀的,無法修改;而由字串常量初始化的陣列是允許修改的,其中的單個字元可以在以後改變。

C語言中指標和陣列

首先,明確乙個概念,指標是什麼,一旦提到這個老生常談且富有爭議性的話題,那真是1000個人有1000種看法。在國內的很多教材中,給出的定義一般就是 指標就是位址 從初步理解指標的角度來說,這種說法是最容易理解的,但是這種說法明顯有它的缺陷所在。指標就是位址 這種說法相當於 指標 字面值位址 或者說乙...

c 中指標和陣列的區別

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

C語言中指標和陣列分析 上

事物的難度遠遠低於對事物的恐懼!這章我們來分析下指標和陣列,在前兩章我們談了陣列和指標,我們知道 陣列的本質 陣列是一段連續的記憶體空間 陣列的空間大小為sizeof array type array size 陣列名可看做指向陣列第乙個元素的常量指標 那麼我們來看乙個問題 對於乙個陣列 int a...