一直以來寫程序,我都喜歡用數組下標來引用數組元素,由於比較直觀,雖然知道能夠用指針變量來引用數組元素,可是總感受不太理解,不敢亂用,今天抽空看了下教材,有一點感悟,特摘抄過來。數組
摘自譚浩強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 }
方法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 }
方法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 }
比較:方法1和方法2執行效率是相同的,C編譯系統先將a[i]轉換成*(a+i)處理,即先計算元素地址,較費時。編譯
方法3,用指針變量直接指向元素,沒必要每次都從新計算地址,p++這種自加操做是比較快的,此方法效率最高。