天天看點

《指針的程式設計藝術(第二版)》一1.2 一維數組

本節書摘來自異步社群《指針的程式設計藝術(第二版)》一書中的第1章,第1.2節,作者 蔡明志,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

指針的程式設計藝術(第二版)

我們把焦點轉到一維數組,範例addressarray-5展示了如何調用scanf函數,并從鍵盤向數組輸入資料。

範例addressarray-5

輸出結果

《指針的程式設計藝術(第二版)》一1.2 一維數組

這個數組有5個元素,分别為x[0]、x[1]、x[2]、x[3]和x[4]。每一個元素都是整數變量,是以隻要在這些變量前加上&,即表示該變量在記憶體的位址。程式使用循環方法,輸入資料給x數組,如下所示:

  <code>`</code>javascript

for(i=0; i&lt;5; i++)

  {

    printf("請輸入x[%d]的整數值: ", i);

    scanf("%d", &amp;x[i]);

  }

請不要在已表示數組名前又加上&amp;,如該示例中的x數組,因為x已表示位址,是以再加上&amp;,等于畫蛇添足。

我們也可以在定義數組時順便指定初始值,如下例所示。

表示數組有五個元素,分别為x[0]、x[1]、x[2]、x[3]、x[4],其所對應的記憶體位址,表示為&amp;x[0]、&amp;x[1]、&amp;x[2]、&amp;x[3]、&amp;x[4]或x、x+1、x+2、x+3、x+4。如果想知道數組中的每一個元素所在的記憶體位址,可利用%p或%x的對應格式。請參閱範例addressarray-10。

範例addressarray-10

《指針的程式設計藝術(第二版)》一1.2 一維數組

由于這個數組的資料類型是int,是以元素之間的位址相隔4位元組。當x等于0012ff4c,x+1是0012ff50。要注意這裡的1,是表示每一機關所占的位元組(bytes)數,就此數組而言,x+1等于0012ff4c + (1*4),由此得到0012ff50。如下圖所示。

《指針的程式設計藝術(第二版)》一1.2 一維數組

若将資料類型改為double,則情形又會如何?請參閱範例addressarray-15。

範例addressarray-15

《指針的程式設計藝術(第二版)》一1.2 一維數組

由于此範例的數組資料類型為double,是以元素之間的位址相隔8位元組。

繼續閱讀