サイトマップ / C言語講座>出入り口>総目次>目次:ポインタ>データの書き換え
[ポインタの型と初期化]←このソース→[ポインタの指す位置]
/* 前回は変数のアドレスをポインタに入れて、ポインタの指す中身を表示しました。sをポインタとすると、下記に示すようにポインタの指す位置を1つ先に移動することもできました。
s++;
今回はポインタの指す中身を増加させてみます。
*sはポインタの指す中身のことです。これにインクリメント演算子を組み合わせれば、ポインタの指す中身の値を1増加させることができます。その際カッコが必要になります。下記のコードでポインタの指す中身を1増加させます。
(*s)++;
今日のソースプログラムでは、int型の変数xとint型のポインタpxを宣言して、pxにxのアドレスを代入し、上記の操作を繰り返し行い、xの値を0から9まで変化させます。この際、xの値を直接変化させていないことに注目して下さい。また、char型の変数cとchar型のポインタpcを宣言して、pcにcのアドレスを代入し、上記の操作を繰り返し行い、cの値を'a'から'z'まで変化させます。この際、cの値を直接変化させていないことに注目して下さい。
ポインタの名前には、”p”という文字を入れておくと、その変数がポインタであることを明示できるので良いと思います。また、将来、ファイルを扱う際に、ファイルポインタを通してデータを読み書きする事になります。この時には、ファイルポインタであることを明示する目的で、”fp”と名前を付けることが多くあります。 */
#include <stdio.h> void main(void); void main(void) { int i; int x = 0; /* 初期値 0 */ int *px; /* x を指すポインタ */ char c = 'a'; /* 初期値 'a' */ char *pc; /* c を指すポインタ */ px = &x; /* x のアドレスを px に代入 */ pc = &c; /* c のアドレスを pc に代入 */ for (i = 0; i < 10; i++) { printf("%d", x); /* x の値を表示 */ (*px)++; /* px の指す中身をインクリメント */ } printf("\n"); /* 1 行改行 */ for (i = 0; i < 26; i++) { printf("%c", c); /* c の値を表示 */ (*pc)++; /* pc の指す中身をインクリメント */ } printf("\n"); /* 1 行改行 */ } |
/* printf( )は下記のようにしても同じ結果となります。
printf("%c", c); printf("%c", *pc);
cの値を表示しても、pcの指す中身を表示させても、同じものが表示されます。
for ( )ループは下記の簡潔な表現に書き換えられます。
for (i = 0; i < 10; i++) printf("%d", (*px)++);
この場合、pxの指す中身を表示してから、pxの指す中身をインクリメントせよということです。
++(*px)では、pxの指す中身をインクリメントしてから、pxの指す中身を表示せよとなり、異なる結果になります。 */
[ポインタの型と初期化]←このソース→[ポインタの指す位置]
/* (C) 2000- YFプロ. All Rights Reserved. */ 提供:C言語講座−それ自体コンパイルできる教材を使った講座です−