利用指針完成對數組的遍歷


#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就是一個指針,但在查詢資料中發現了一個截然不同的說法即“數組名永遠不等於指針”,然后了解到指針作為一個變量,存儲着另一個量的地址,在內存中被分配了空間擁有自己的地址,而數組名卻沒有,它直接代表數組首地址,因此不可能作為一個指針存在,后來發現是自己搞混了指針和指針變量的概念,指針應該是一種類型的概念,而不能直接與指針變量和常量指針混為一談,數組名是作為一種指針表達式存在,因為值不變所以是一種常量指針。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM