型とポインタ
C 言語のポインタを理解する の応用編。型とポインタの関係について説明します。
変数の型によってメモリ上に作られる入れ物の大きさが変わります。ただし、ポインタ型は、実体の型がどうであれ、入れ物の大きさは同じです。
以下のように様々な型で変数が定義されると、
次の図のようにメモリ上に変数(入れ物)が作られます。

ポインタ型は実体の型に依存せず同じサイズですが、実体の変数は型によって大きさが全く異なります。
各変数に以下のように値を代入すると、
次の図のようにメモリ上の実体に値が代入されます。

ポインタは実体の型がなにかを表していますが、本質的には同じものです。
← 読んだらプチっとお願いします。
変数の型によってメモリ上に作られる入れ物の大きさが変わります。ただし、ポインタ型は、実体の型がどうであれ、入れ物の大きさは同じです。
以下のように様々な型で変数が定義されると、
long a;
short b;
char c;
typedef struct _sss {
long s1;
short s2;
char s3;
char s4;
} sss;
sss d;
long *ap;
short *bp;
char *cp;
sss *dp;
次の図のようにメモリ上に変数(入れ物)が作られます。

ポインタ型は実体の型に依存せず同じサイズですが、実体の変数は型によって大きさが全く異なります。
各変数に以下のように値を代入すると、
ap = &a;
bp = &b;
cp = &c;
dp = &d;
a = 1;
b = 2;
c = 3;
d.s1 = 4;
d.s2 = 5;
d.s3 = 6;
d.s4 = 7;
次の図のようにメモリ上の実体に値が代入されます。

ポインタは実体の型がなにかを表していますが、本質的には同じものです。
