為什么用指針來引用數組元素?


一直以來寫程序,我都喜歡用數組下標來引用數組元素,因為比較直觀,雖然知道可以用指針變量來引用數組元素,但是總感覺不太理解,不敢亂用,今天抽空看了下教材,有一點感悟,特摘抄過來。

 

摘自譚浩強C程序設計(第三版)

引用一個數組元素,可以用:

(1)下標法:如a[i]形式;

(2)指針法,如*(a+i)或*(p+i),其中a是數組名,p是指向數組元素的指針變量,其初值p = a;

 

輸出數組中的全部元素:數組a,整型,10個元素

方法1:下標法

 1 #include <stdio.h>
 2 void main()
 3 {
 4      int a[10];
 5      int i;
 6      for(i =0; i<10; i++)
 7     {
 8             scanf("%d",&a[i]);
 9      }
10      printf("\n");
11      for(i =0; i<10; i++)
12      {
13              printf("%d",a[i]);
14       } 
15      printf("\n");      
16 }        
View Code

方法2:通過數組名計算數組元素地址,找出元素的值

 1 #include <stdio.h>
 2 void main()
 3 {
 4      int a[10];
 5      int i;
 6      for(i = 0; i<10; i++)
 7      {
 8             scanf("%d",&a[i]);
 9 
10       }
11       printf("\n");
12       for(i=0; i<10;i++)
13      {
14            printf("%d",*(a+i));
15      }  
16      printf("\n");
17 }    
View Code

方法3:用指針變量指向數組元素

 1 #include <stdio.h>
 2 void main()
 3 {
 4      int a[10];
 5      int i,*p;
 6      for(i = 0; i<10; i++)
 7      {
 8             scanf("%d",&a[i]);
 9 
10       }
11       printf("\n");
12       for(p=a; p<(a+10);p++)
13      {
14            printf("%d",*p);
15      }  
16      printf("\n");
17 }  
View Code

比較:方法1和方法2執行效率是相同的,C編譯系統先將a[i]轉換成*(a+i)處理,即先計算元素地址,較費時。

方法3,用指針變量直接指向元素,不必每次都重新計算地址,p++這種自加操作是比較快的,此方法效率最高。

 


免責聲明!

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



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