用指針遍歷一維數組
1 #include<stdio.h>
2 int main()
3 {
4 int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};//定義一個一維數組並初始化 5 int i;//定義一個整型變量 6 int *pointer;//定義一個指針變量 7 pointer=a;//並且指針指向數組a 8 for(i=0;i<12;i++)//利用循環輸出數組的各個元素 9 printf("a[%d]=%d\n",i,*(pointer+i));//打印每個數組元素
return 0;
10 }
分析:
1.
#include<stdio.h>
第一行是調用庫函數,即stdio 就是指 “standard buffered input&output",標是函數中用到了printf這個函數!需要在主函數上進行聲明。
2.
int main()
第二行是定義一個int 型的主函數。一個C程序有且只有一個主函數!
3.
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
定義一個一維數組(我的學號末尾是8)並直接進行初始化,也可以先定義后初始化,其中一維數組的長度可以不寫。
4.
int *pointer;
定義一個指針變量;之前我總是把指針變量和指針弄混,把書上的定義又看了一遍!指針是地址,而指針變量則是地址變量。
例如:
int i=2;
int *p;
p=&i;
在這三行代碼里面,i是一個int型變量,p是一個int型的指針變量,p里面的值是指針!
5.
pointer=a;
在寫這一行代碼時出現了一個問題,就是一開始我這樣寫pointer=&a,編譯出現了錯誤!我想了半天也沒想出來,通過老師的引導,明白了;首先數組名就是數組的首地址,即a=&a[0],但是兩個含義不同,a是默認為數組首地址,但同時也是表示整個數組,所以pointer=&a是不對的!,他不知道該取數組中的哪一個元素的地址!
錯誤原因:沒能夠理解定義,按照自己的想法去做!
6.
for(i=0;i<12;i++)
這是一個for循環,可以讓數組中每個元素一個個輸出即數組遍歷!這里要注意()中的語句要用;隔開!!!而且如果循環體中有多個語句時可以用{};其實用while循環也是可以的!不過沒有for循環簡練!
7.
printf("a[%d]=%d\n",i,*(pointer+i));
這是輸出函數,把數組的每一個元素打印出來!這里要注意打印的數據類型,以及輸出表列的表達式!
總結:
(1)像在定義一個一維數組時可以不寫數組的長度,但是二維數組就必須要寫了!數組初始化時,注意數組元素是用{}並且有;
(2)多用注釋會節約很多時間。
(3)在學習過程中,要經常復習前面的知識點,不會的地方一定要多查資料和課本!可以鞏固和提高自己的專業知識!
(4)學習C語言要有一顆嚴謹的心,我就是那種容易大意的人,通過C語言的學習讓我細心了許多!
(5)實踐是學習C語言的捷徑!只有實踐才會發現很多錯誤並提高!