C語言 理解指標和陣列

2021-09-11 02:13:26 字數 1170 閱讀 1589

a ==

&a[0];

//陣列名是該陣列首元素的位址

#include

#include

#define size 4

intmain()

system

("pause");

return0;

}

執行結果:

注:位址是十六進製制的,因此7d比7c大1,3d比3c大1。

在我們的系統中,位址按位元組編址,short型別占用2位元組,double型別占用8位元組。在c中,指標加1指的是增加乙個儲存單元。對陣列而言,這意味著加1後的位址是下乙個元素的位址,而不是下乙個位元組的位址。這是為什麼必須宣告指標所指向物件型別的原因之一。只知道位址不夠,因為計算機要知道儲存物件需要多少位元組(即使指標指向的是標量變數,也要知道變數的型別,否則*pt就無法正確地取回位址上的值)

現在可以更清楚地定義指向int的指標,指向float的指標,以及指向其他資料物件的指標。

下面的等式體現了c語言的靈活性:

dates +2==

&dates[2]

;//相同的位址

*(dates +2)

== dates[2]

;//相同的值

以上關係表明了陣列和指標的關係十分密切,可以使用指標標識陣列的元素和獲得元素的值。從本質上看,同乙個物件有兩種表示法。實際上,c語言標準在描述陣列表示法時確實借助了指標。也就是說,定義ar[n]的意思是*(ar+n)。

明白了陣列和指標的關係,便可以在編寫程式時適時使用陣列表示法或指標表示法。如下面程式:

#include

#include

intmain()

;int i =0;

for(i =

0; i <12;

++i)

system

("pause");

return0;

}

這裡,days是陣列首元素的位址,days+i是元素days[i]的位址,而*(days+i)則是該元素的值,相當於days[i]。

C語言指標和陣列理解

今天看 狂人c 關於指標這一章,感覺自己c語言對於指標的理解確實更進一步了,作者 命名和格式雖然不怎麼樣,但是確實理解透徹,講得通俗,對於我這樣的入門級選手還是不錯的。首先關於指標的幾個結論的理解 指標儲存大小與作業系統位數有關,一般裝的是32位的作業系統,那麼指標輸出來顯示的便是32位,合4位元組...

C語言指標和陣列理解

今天看 狂人c 關於指標這一章,感覺自己c語言對於指標的理解確實更進一步了,作者 命名和格式雖然不怎麼樣,但是確實理解透徹,講得通俗,對於我這樣的入門級選手還是不錯的。首先關於指標的幾個結論的理解 指標儲存大小與作業系統位數有關,一般裝的是32位的作業系統,那麼指標輸出來顯示的便是32位,合4位元組...

C語言 陣列指標和陣列指標的理解

陣列指標和指標陣列如何分辨呢看他後面的側重 例如 分解 int a 3 int 3 a 指標陣列 int b 3 int 3 b 陣列指標 片段 這段 定義了乙個陣列指標和乙個陣列指標,利用指標的偏移來做測試 include int b 3 陣列指標 char str1 good char str2...