構造体 ポインタ
Posted: 2010年5月23日(日) 18:24
C言語で、構造体のメンバ変数がポインタのときについてなのですが、
前に、ここでポインタについて質問させてもらったときに、
char *str;
ではデータを入れるための領域は確保されていません。
char a100[5];
とかけば5バイトのものが入れられる入れ物が用意されます。
文字列を入れたいなら必要なバイト数先に確保しなくてはなりません。
と教えてもらったので、メンバ変数を今回のようにポインタではなく、配列にしないといけないような気がするのですが、どうなのでしょうか?
よろしくお願いします。
struct Data {
char *n;
char *m;
};
int main(void) {
struct Data data[/url] = {
{"Suzuki", "Taro"},
{"Sato" , "Taro"}
};
return 0;
}
のように、なぜ、メンバ変数がポインタなのに文字列を代入してもよいのでしょうか?前に、ここでポインタについて質問させてもらったときに、
char *str;
ではデータを入れるための領域は確保されていません。
char a100[5];
とかけば5バイトのものが入れられる入れ物が用意されます。
文字列を入れたいなら必要なバイト数先に確保しなくてはなりません。
と教えてもらったので、メンバ変数を今回のようにポインタではなく、配列にしないといけないような気がするのですが、どうなのでしょうか?
よろしくお願いします。
