利用指針遍歷數組


用指針遍歷一維數組

 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語言的捷徑!只有實踐才會發現很多錯誤並提高!

 


免責聲明!

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



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