計算機科学のブログ

C - メモリとポインタ - 何を指しているの? - 配列変数

Head First C ―頭とからだで覚えるCの基本David Griffiths(著)、 Dawn Griffiths(著)、 中田 秀基(監修)、 木下 哲也(翻訳)、 O’Reilly Media)の 2章(メモリとポインタ - 何を指しているの?)、p.57(恋愛ゲーム)の解答を求めてみる。

Makefile

all: a.out
	./a.out

a.out: main.c
	cc main.c

コード

main.c

#include <stdio.h>

int main()
{
    int contestants[] = {1, 2, 3};
    int *choice = contestants;
    contestants[0] = 2;              // {2, 2, 3}
    contestants[1] = contestants[2]; // {2, 3, 3}
    contestants[2] = *choice;        // {2, 3, 2}
    printf("%i\n", contestants[2]);  // 2
    for (size_t i = 0; i < 3; i++)
    {
        printf("contestants[%li]: %i\n", i, contestants[i]);
    }
}

入出力結果(Terminal, Zsh)

% make
cc main.c
./a.out
2
contestants[0]: 2
contestants[1]: 3
contestants[2]: 2
%