指針與數組實例練習(指針運算)


數組元素的指針就是數組元素的地址。C語言中,數組名代表數組中首元素的地址,因此p=&a[0]等價於p=a,即把數組a的首元素的地址賦給指針變量p。

在指針指向數組時,可以對指針進行運算:

加一個整數:p+1;//指向同一數組的下一個元素

減一個整數:p-1;//指向同一個數組的上一個元素

自加運算:p++,++p;   自減運算:p--,--p;

兩個指針相減:p1-p2;(當p1和p2指向同一數組元素時)//計算p1和p2所指元素的相對距離

例1:利用指針,輸出數組中的全部元素。

 1 int main()
 2 {
 3     int a[10];
 4     int *p,i;
 5     printf("please enter 10 integer numbers:\n");
 6     for(i=0;i<10;i++)
 7     {
 8         scanf("%d",&a[i]);
 9     }
10     for(p=a;p<(a+10);p++)
11     {
12         printf("%d,",*p);
13     }
14     printf("\n");
15     return 0;
16 }
 1 int main()
 2 {
 3     int i,a[10],*p=a;
 4     printf("please enter 10  integer numbers:\n");
 5     for(i=0;i<10;i++)
 6        scanf("%d",p++);
 7     p=a;
 8     for(i=0;i<10;i++,p++)
 9        printf("%d, ",*p);
10     printf("\n");
11     return 0;
12 }

兩種方式,體現指針使用的靈活多樣,我個人感覺這也是指針之所以難理解的原因。

例2:將數組a中n個整數按相反順序存放。

 1 int main()
 2 {
 3     void inv(int x[],int n);
 4     int i,a[10]={21,3,56,25,5,7,33,78,2,9};
 5     printf("The original array:\n");
 6     for(i=0;i<10;i++)
 7        printf("%d ",a[i]);
 8     printf("\n");
 9     inv(a,10);
10     printf("The array has been inverted:\n");
11     for(i=0;i<10;i++)
12        printf("%d ",a[i]);
13     printf("\n");
14     return 0;
15 }
16 void inv(int x[],int n)
17 {
18     int temp,i,j,m=(n-1)/2;
19     for(i=0;i<=m;i++)
20     {
21         j=n-1-i;
22         temp=x[i];
23         x[i]=x[j];
24         x[j]=temp;
25     }
26     return;
27 }

 


免責聲明!

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



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