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語言的靈活性:
以上關係表明了陣列和指標的關係十分密切,可以使用指標標識陣列的元素和獲得元素的值。從本質上看,同乙個物件有兩種表示法。實際上,c語言標準在描述陣列表示法時確實借助了指標。也就是說,定義ar[n]的意思是*(ar+n)。dates +2==
&dates[2]
;//相同的位址
*(dates +2)
== dates[2]
;//相同的值
明白了陣列和指標的關係,便可以在編寫程式時適時使用陣列表示法或指標表示法。如下面程式:
這裡,days是陣列首元素的位址,days+i是元素days[i]的位址,而*(days+i)則是該元素的值,相當於days[i]。#include
#include
intmain()
;int i =0;
for(i =
0; i <12;
++i)
system
("pause");
return0;
}
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...