1. 程式人生 > >指標和一維陣列關係

指標和一維陣列關係

#include <stdio.h>
int main()
{
    int i;
    int score[]={98,56,87,96,56};
    int *ptr_score;
    ptr_score = score;
    printf("陣列的首地址:%p\t陣列的首元素地址:%p\n",score,&score[0]);
    //陣列名為陣列首地址,和陣列首元素的地址一致。
    printf("\n第一種表示方法:\n");
    for(i=0;i<5;i++)
    {
        printf("%d\t",ptr_score[i]);
    }
    printf("\n第二種表示方法:\n");
    for(i=0;i<5;i++)
    {
        printf("%d\t",score[i]);
    }
    printf("\n第三種表示方法:\n");
    for(i=0;i<5;i++)
    {
        printf("%d\t",*(ptr_score + i));
    }
    printf("\n第四種表示方法:\n");
    for(i=0;i<5;i++)
    {
        printf("%d\t",*(score + i));
    }
    printf("\n第五種表示方法:\n");
    for(i=0;i<5;i++)
    {
        printf("%d\t",*ptr_score++);
    }
    //強調第五種如果想再次列印數組裡的元素,需要重置指標的位置。
    ptr_score = score;
    return 0;
}

小結:

  • int num[50];需要強調:num作為陣列名,同樣也是該陣列的首地址。
  • num的值和&num[0]的值是一致的,即陣列的首地址和陣列首元素的地址一致。
  • 陣列中第i+1個元素為:
    第i+1個元素的值:num[i+1] 或 *(num+i+1)
    第i+1個元素的地址:&num[i+1] 或 num+i+1
  • 為指向陣列的指標賦值:
    int *ptr_num = num 或 int *ptr_num = &num[0]
  • 指標變數可以指向陣列元素:
    int *ptr_num = &num[4] 或 int *ptr_num = num+4