爲何用指針來引用數組元素?

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

 

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

引用一個數組元素,能夠用:spa

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

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

 

輸出數組中的所有元素:數組a,整型,10個元素指針

方法1:下標法code

 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:經過數組名計算數組元素地址,找出元素的值blog

 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:用指針變量指向數組元素io

 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++這種自加操做是比較快的,此方法效率最高。

相關文章
相關標籤/搜索