#include<stdio.h> main() { int *p,i;//定義一個指針p,定義一個整形i int shuzu[38]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,
19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37};//定義一個數組shuzu[38](大小為本人學號34+4),並設定數組內元素為從0至37 p=shuzu;//讓指針p指向數組開頭的地址 for(i=0;i<38;i++)//定義一個for循環,讓整形i從數組的開頭的標號增加至結尾的標號來完成對數組的遍歷 printf("a[%d]=%d\n",i,*(p+i)); //a[i]為當前數組的編號,p增加i即增加i個數組元素的大小來指向數組[i]的地址,每輸出一個數組元素就換行 }


程序編譯運行成功,並成功完成對數組元素的遍歷
總結:
1.
p=shuzu;//讓指針p指向數組開頭的地址
數組名shuzu能指向該數組的首地址,它是&數組[0]的化簡形式,是指針表達式,由於在作用域內這個值是不變的,所以叫做指針常量,是指針表達式的最基本形式,在數據傳遞時數組名代表a[0]的地址。而在使用數組元素的數組名(a[0],a[1]...)時需要通過加上&(&a[0],&a[1]...)來取地址。
2.
for(i=0;i<38;i++) printf("a[%d]=%d\n",i,*(p+i));
在開頭int shuzu[38]即在內存中開拓了大小為38*sizeof(int)的內存空間,每一個數組元素的大小為sizeof(int)即4個字節,因此在for循環中指針p每+1,即在地址上+4,因此可以指向相鄰的下一個數組元素。
3.在做這一作業總結時,對我所定義的數組的數組名shuzu的類型產生了一定的疑問,一開始我直接認為shuzu就是一個指針,但在查詢資料中發現了一個截然不同的說法即“數組名永遠不等於指針”,然后了解到指針作為一個變量,存儲着另一個量的地址,在內存中被分配了空間擁有自己的地址,而數組名卻沒有,它直接代表數組首地址,因此不可能作為一個指針存在,后來發現是自己搞混了指針和指針變量的概念,指針應該是一種類型的概念,而不能直接與指針變量和常量指針混為一談,數組名是作為一種指針表達式存在,因為值不變所以是一種常量指針。
