演習課題「ポインタを作成する」
右のコードエリアには、配列の要素をポインタを使って表示するプログラムがあります。
このコードは未完成です。
int へのポインタ型の変数 p を宣言し、p が指し示す先の値を出力するようにしてください。
コードを実行して、正しく表示されれば演習課題クリアです!
期待する出力値
data 配列のインデックス 2 の要素 : 3
演習課題「ポインタを使って配列の要素を書き換える」
右のコードエリアには、配列の要素をポインタを使って書き換えるプログラムがあります。
このコードは未完成です。該当箇所にコードを追加して、プログラムを完成させてください。
コードを実行して、正しく表示されれば演習課題クリアです!
期待する出力値
書き換えた要素 : 10
10
2
3
4
5
#03:配列に対してポインタを使ってみよう
配列に対してポインタを使ってみます。
#include <stdio.h>
int main(void)
{
int data[] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
printf("%d\n", data[i]);
}
}
次のようにすれば、int 型の配列を作成して初期化することができます。int 配列名[] = {要素1, 要素2, ... };
int へのポインタ型の変数 p1 はint *p1;
で宣言できます。
複数のポインタを作成するときは、int *p1, *p2;
のように毎回 * (アスタリスク)を変数の前につけます。
変数名の前に & (アンド)をつけると、その変数のアドレスを取得できます。なので、p1 = &(変数名);
とすると、指定した変数のアドレスを p1 に代入できます。
・ 配列の要素も指定できるので、p1 = &data[2];
とすれば、「data 配列のインデックス 2 の要素のアドレス」を p1 に代入できます。
p1 = &(変数名);
で p1 にアドレスを代入して、*p1 = 30;
のようにすると、「p1 に代入されたアドレスにある変数の値」を 30 に書き換えることができます。
このチャプターで作成したコードです。// 配列に対してポインタを使ってみよう
#include <stdio.h>
int main(void)
{
int data[] = {1, 2, 3, 4, 5};
int *p1, *p2;
p1 = &data[2];
p2 = &data[4];
*p1 = 30;
*p2 = 50;
for (int i = 0; i < 5; i++) {
printf("%d\n", data[i]);
}
}
- IT 専科 - C 言語入門 ポインタ
http://www.itsenka.com/contents/development/c/pointer.html
- 初心者のためのポイント学習 C 言語 - ポインタ
http://www9.plala.or.jp/sgwr-t/c/sec10.html