5.3 ポインタと配列 K&R プログラミング言語C

5.3 ポインタと配列

#include <stdio.h>

int main(void)
{
    int i, len;
    int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int *pa;

    len = (sizeof a) / (sizeof a[0]);

    printf("a[] => ");
    for (i = 0; i < len; i++) {
        printf(",%d", a[i]);
    }
    printf("\n");

    /* a は配列先頭のアドレス */
    pa = a; /* pa = &a[0]; と同じ */
    printf("*pa => ");
    for (i = 0; i < len; i++) {
        printf(",%d", *pa++);
    }
    printf("\n");

    /* *(a+i) は a[i] と同じ */
    printf("*(a+i) => ");
    for (i = 0; i < len; i++) {
        printf(",%d", *a+i);
    }
    printf("\n");

    /* 再び pa を配列先頭のアドレスを指すようにする */
    pa = a;
    printf("pa[i] => ");
    for (i = 0; i < len; i++) {
        printf(",%d", pa[i]);
    }
    printf("\n");

    return 0;
}

実行結果

$ ./ptr_ary
a[] => ,1,2,3,4,5,6,7,8,9,10
*pa => ,1,2,3,4,5,6,7,8,9,10
*(a+i) => ,1,2,3,4,5,6,7,8,9,10
pa[i] => ,1,2,3,4,5,6,7,8,9,10
プログラミング言語C 第2版 ANSI規格準拠
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 9726
«
»