5.1 ポインタとアドレス K&R プログラミング言語C

5.1 ポインタとアドレス

ポインタの算術演算例

#include <stdio.h>

int main(void)
{
    int x = 5;
    int *ip;

    ip = &x;
    printf("*ip => %d\n", *ip);
    printf("ip => %p\n", ip);
    *ip = *ip + 10;
    printf("*ip = *ip + 10; *ip => %d\n", *ip);
    printf("ip => %p\n", ip);
    *ip += 1;
    printf("*ip += 1; *ip => %d\n", *ip);
    printf("ip => %p\n", ip);
    ++*ip;
    printf("++*ip; *ip => %d\n", *ip);
    printf("ip => %p\n", ip);
    (*ip)++;
    printf("(*ip)++; *ip => %d\n", *ip);
    printf("ip => %p\n", ip);
    *ip++;
    printf("*ip++; *ip => %d\n", *ip);
    printf("ip => %p\n", ip);

    return 0;
}

実行結果

$ ./calc_pointer
*ip => 5
ip => 0x7fff5fbfebec
*ip = *ip + 10; *ip => 15
ip => 0x7fff5fbfebec
*ip += 1; *ip => 16
ip => 0x7fff5fbfebec
++*ip; *ip => 17
ip => 0x7fff5fbfebec
(*ip)++; *ip => 18
ip => 0x7fff5fbfebec
*ip++; *ip => 1606413312 /* ポインタ ip をインクリメントしている */
ip => 0x7fff5fbfebf0

*ip++ はポインタ ip をインクリメントし、その指し示す先の内容となる。

プログラミング言語C 第2版 ANSI規格準拠
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 9726
«
»