おえぷろべい

お絵かきとかプログラミングとか米国株投資についてのなんやかんや

変数の大きさとアドレスについて(C言語)

f:id:feci:20210810151051j:plain

C11

 

C11における変数の大きさとアドレスについて。

#include <stdio.h>  //組み込み関数を使うために読み込み

void main() {
  int ia = 100;       //int型の変数
  double da = 123.4;  //double型の変数
  float fa = 123.4f;  //float型の変数は末尾にfを付ける
  char ca = 'あ';     //char型の変数

 printf("iaの値は%d、大きさは%dbyte、アドレスは0x%x\n"iasizeof(int), &ia);     //100  ・4byte・0x8ffe04
  printf("daの値は%f、大きさは%dbyte、アドレスは0x%x\n"dasizeof(double), &da);  //123.4・8byte・0x8ffdf4
  printf("faの値は%f、大きさは%dbyte、アドレスは0x%x\n"fasizeof(float), &fa);   //123.4・4byte・0x8ffde8
  printf("caの値は%c、大きさは%dbyte、アドレスは0x%x\n"casizeof(char), &ca);    //・   ・1byte・0x8ffddf
}

変数には現在代入されている値以外にも、大きさとアドレスという2つの要素があります。

 

 

〇変数の大きさ

変数の大きさはbyte数で表されます。

 

このbyte数は変数のデータ型によって確定します。

今現在変数に代入されている値の量には依存していません。

 

データ型の大きさはsizeof関数を使うことで取得できます。

 

 

〇変数のアドレス

各変数にはアドレスという、メモリのどの位置にいるのかという記号が割り振られます。

 

このアドレスは、プログラムの実行毎に変わります。

変数のアドレスは常に固定されたものではなく、遊牧民のキャンプ地のようにプログラムの実行時に毎回変更されてしまいます。

 

その変数のアドレスを取得したい場合は、その変数名の先頭に&を付けます。

printf関数でアドレスを表示する場合は、変換指定子は%x(符号なし16進数)を使います。

つまり変数iaのアドレスを表示したい場合は、printf関数で%xと&iaを使えばいいわけですね。

 

 

以上です。