演習課題「ポインタに添字演算子を使う」
右のコードは、ポインタ型の変数 p を使って、data 配列の 1 部の要素を出力するプログラムです。
このプログラムは未完成です。p 変数に添字演算子を使って、data 配列の 6 つの要素を出力するよう修正してください。
プログラムを実行して、正しく出力されれば演習課題クリアです!
期待する出力値
5
6
7
8
9
10
演習課題「ポインタを使って配列の要素を表示させる」
右のコードは、ポインタを使って配列の要素を表示するプログラムです。
このプログラムは未完成です。コードを正しく追加して、配列のすべての要素が表示されるようにしてください。
コードを実行して、正しく表示されれば演習課題クリアです!
期待する出力値
1
2
3
4
5
#05:配列とポインタ
ポインタを使った配列操作について学習します。配列についても理解を深めましょう。
#include <stdio.h>
int main(void)
{
int data[] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
printf("&data[%d] : %p\n", i, &data[i]);
}
}
・アドレスを出力するには、printf の変換指定子に %p を使います。
・出力結果は、プログラムを実行するたびに変わります。
配列を表す変数は、その配列の先頭の要素へのポインタになっています。
たとえば、以下のプログラムを実行すると、同じアドレスが出力されます。#include <stdio.h>
int main(void)
{
int data[] = {1, 2, 3, 4, 5};
printf("%p\n", data);
printf("%p\n", &data[0]);
}
配列の要素を取り出すときに使用していた [ ] は「添字演算子」とよばれる、ポインタを扱うための演算子の 1 つです。
添字演算子は、配列のみに使えるものではなく、ポインタ型の変数に対しても使うことができます。
このチャプターで作成したコードです。// 配列とポインタ
#include <stdio.h>
int main(void)
{
int data[] = {1, 2, 3, 4, 5};
int *p;
p = &data[2];
p[2] = 50;
for (int i = 0; i < 5; i++) {
printf("data[%d] : %d\n", i, data[i]);
}
for (int i = 0; i < 3; i++) {
printf("p[%d] : %d\n", i, p[i]);
}
}
※p 変数には data[2] のアドレスが代入されるので、
p 変数は data 配列の 3 以降の要素 (インデックス 2 以降の要素) からなる配列のように使うことができます。