電脳ミツバチのコンピュータ広報室

銀座の屋上菜園を耕しています。コンピュータ畑も耕します。

①構造体の使い方

スポンサーリンク
struct p_kouzoutai
{
char *a;
char *b;
char *c;
}

struct a_kouzoutai
{
char a;
char b;
char c[];
}

の違いは何だろうか?関数とポインタの項でやったが大きさ分のメモリを取るのが配列でアドレス分だけを取るのがポインタである。
早速見てみると、

#include<stdio.h>
main(){
typedef struct p_kouzoutai
{
	char *a;
	char *b;
	char *c;
}POINT;
typedef struct a_kouzoutai
{
	char a[10];
	char b[10];
	char c[10];
}ARRAY;

printf("p_kouzoutai=%d\n",sizeof(POINT));

printf("a_kouzoutai=%d\n",sizeof(ARRAY));

}
	
結果
p_kouzoutai=12
a_kouzoutai=30

見て分かるとおりポインタの方は4バイト*3で12バイト。配列は10バイト*3で30バイト。