第35回 メモリ4
今回も、C言語で使うメモリについて説明していきます。
では、ソースコードを見てください。
<ソースコード>
#include <stdio.h>
void main()
{
int i, b;
int *c;
int a[8];
for ( i=7; i>=0; i-- )
a[i] = i;
b = 5;
printf( "変数 a[%d]は %d で、アドレスは %d です\n", b, a[b], &a[b] );
c = &a[b];
printf( "変数 a[%d]は %d で、アドレスは %d です\n", *c, *c, c );
c = c+2;
printf( "変数 a[%d]は %d で、アドレスは %d です\n", *c, *c, c );
}
早速、コンパイルして実行してみましょう。
結果は、
変数 a[5]は 5 で、アドレスは 6553072 です
変数 a[5]は 5 で、アドレスは 6553072 です
変数 a[7]は 7 で、アドレスは 6553080 です
が表示されたはずです。
まず、7行目の変数が前回の<ソースコード>で使った char型から int型に
変わったことに注目しましょう。
18行目でcのアドレスを2足してみましょう。
単純に考えると6553072+2ですから6553074のアドレス番号を表示する思われた
方もいるのではないでしょうか?
しかし、アドレスは 6553080 になっています。
これは、18行目では、int型の大きさを加算していると考えます。
int型の大きさは4バイトでした。従って、4バイトを2個分足していますよ。
という意味になりますね。
式を言葉で書くと、
コンピュータが決めたアドレス+(型の大きさ×数字)
計算すると
6553072+(4x2)で 6553080です。
char型の場合は、大きさが1バイトでしたので1バイト2個分でアドレスが
計算すると
6553072+(1x2)で 6553074です。
ですね。
今回もポインタ変数に触れましたが、少し難しいなと思われた方は
float型やdouble型についてもやってみてください。この計算方法が明確になる
でしょう。理解せず後回しにすると、C言語のポインタ計算は、複雑なプログラム
を考える時、時間がかかってしまいます。
次回もこれを使ってメモリについて説明します。
それでは、次回をお楽しみに。
今回も、C言語で使うメモリについて説明していきます。
では、ソースコードを見てください。
<ソースコード>
#include <stdio.h>
void main()
{
int i, b;
int *c;
int a[8];
for ( i=7; i>=0; i-- )
a[i] = i;
b = 5;
printf( "変数 a[%d]は %d で、アドレスは %d です\n", b, a[b], &a[b] );
c = &a[b];
printf( "変数 a[%d]は %d で、アドレスは %d です\n", *c, *c, c );
c = c+2;
printf( "変数 a[%d]は %d で、アドレスは %d です\n", *c, *c, c );
}
早速、コンパイルして実行してみましょう。
結果は、
変数 a[5]は 5 で、アドレスは 6553072 です
変数 a[5]は 5 で、アドレスは 6553072 です
変数 a[7]は 7 で、アドレスは 6553080 です
が表示されたはずです。
まず、7行目の変数が前回の<ソースコード>で使った char型から int型に
変わったことに注目しましょう。
18行目でcのアドレスを2足してみましょう。
単純に考えると6553072+2ですから6553074のアドレス番号を表示する思われた
方もいるのではないでしょうか?
しかし、アドレスは 6553080 になっています。
これは、18行目では、int型の大きさを加算していると考えます。
int型の大きさは4バイトでした。従って、4バイトを2個分足していますよ。
という意味になりますね。
式を言葉で書くと、
コンピュータが決めたアドレス+(型の大きさ×数字)
計算すると
6553072+(4x2)で 6553080です。
char型の場合は、大きさが1バイトでしたので1バイト2個分でアドレスが
計算すると
6553072+(1x2)で 6553074です。
ですね。
今回もポインタ変数に触れましたが、少し難しいなと思われた方は
float型やdouble型についてもやってみてください。この計算方法が明確になる
でしょう。理解せず後回しにすると、C言語のポインタ計算は、複雑なプログラム
を考える時、時間がかかってしまいます。
次回もこれを使ってメモリについて説明します。
それでは、次回をお楽しみに。
スポンサーサイト