數組指針示例

 1 #include
  2 
  3 
  4 int main()
  5 {
  6         int a[5] = {11,22,33,44,55};
  7         int *p;//野指針 儘量避免,用空指針代替
  8 
  9         int* q = NULL;//空指針
 10         printf("p = %p\n",p);
 11         printf("q = %p,q = %d\n",q,q);
 12 
 13         #define T int*
 14         union{
 15                 T x; 
 16                 char b[sizeof(T)];
 17         }u;
 18         u.x = q;
 19         int i;
 20         for(i = 0;i<sizeof(T);i++)
 21                 printf("%d",u.b[i]);

 22         printf("\n");

 23 //      *p = 100;可能導致非法內存訪問
 24         p = a;//數組當作數據用時表示第一個元素的地址
 25         for(i = 0;i<5;i++)printf("%d   ",a[i]); printf("\n");
 26         for(i = 0;i<5;i++)printf("%d   ",*(p+i));printf("\n");
 27         for(i = 0;i<5;i++)printf("%d   ",p[i]); printf("\n");
 28         for(i = 0;i<5;i++)printf("%d   ",*(a+i));printf("\n");
 29 
 30         printf("%d\n",(p+2)[1]);//*((p+2)+1)==>*(p+3)==>p[3]
 31         q = p+1;
 32         printf("%n",q[1]);
 32 
 33         for(i = 0;i<5;i++)printf("%d   ",*p+i); printf("\n");
 34         for(i = 0;i<5;i++)printf("%d   ",*p++); printf("\n");
 35         for(i = -5;i<0;i++)printf("%d   ",p[i]);        printf("\n");
 36         for(i = 0;i<5;i++)printf("%d   ",*p--); printf("\n");//第一個是亂碼 然後是 55 44 33 22  用--p才能輸出55 44 33 22 11
 37         return 0;
 38 }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章