C語言中指標和陣列的幾種訪問形式

2021-07-22 05:33:51 字數 818 閱讀 5873

一、關於這幾種訪問形式,理論不多說,從例子看:

1、陣列名

#includeint main()

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

}

2、指標變數名

#includeint main()

; pa=a; //注意陣列名直接賦值給指標

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

}

從上面的兩個例子(四個結論),我們知道結果都是01234。即通過陣列名、指針對陣列元素的訪問是沒有什麼區別。從這裡也可以看出陣列名也是指標。難道他們沒有任何區別嗎?看下面的例子

3、陣列名與指標變數名的區別

#includeint main()

; pa=a;

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

}

上面的結果和1、2的四種結果一樣。但是如果把pa換成a,程式編譯通不過。為什麼呢?

因為pa指標是指標變數,而a是指標常量。對於pa++,pa指標的值是不斷增加的,而陣列名是指標常量,是不能被修改的。前面的幾種情況下,pa始終是不變的,因此可以用陣列名a代替指標變數pa。

注意一點:

在上面的例子中,陣列的初始化必須是int a=;而不能是int *a=;後者編譯都是警告,執行通不過。

但是換成字串陣列和字元指標卻可以,具體原因我還要進一步學習,先看下面的例子

#includeint main()

}

原因等我搞明白了再回來補充。

C語言中指標和陣列

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

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

看 c專家程式設計 一書,看到陣列與指標並不相同一章,遂做了一段測試 include include int main void 輸出 可以看到這樣的輸出,結果很顯然 第乙個輸出的值,0028ff24,應該是符號表中p的位址。第二個值,00403000,是位址0028ff24中儲存的值,也就是指標p...

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

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