構造体について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
situmon

構造体について

#1

投稿記事 by situmon » 16年前

typedef struct{ 
    double x,y; 
    int status,counter; 
    int shot [11][15]; 
} BODY_player_t; 

BODY_player_t Player;

これと
typedef struct{
        int x,y,img;
}ch_t;
はどう違うのでしょうか?
一つ目はなぜ上にはBODYがつくのか?
二つ目はなぜ下にBODY_player_t Player; という記述がしてあるのか?
です。
また上を
typedef struct{ 
    double x,y; 
    int status,counter; 
    int shot [11][15]; 
} player_t;
だけにしてはいけないのでしょうか?

初歩的な質問ですが、これはC言語の本には書いてなかった気がしたので、

すいません・・・

box

Re:構造体について

#2

投稿記事 by box » 16年前

> typedef struct{ 
>     double x,y; 
>     int status,counter; 
>     int shot [11][15]; 
> } BODY_player_t; 
> 
> BODY_player_t Player; 

ここまでの記述は、

double型のメンバーx,y
int型のメンバーstatus,counter,shot[11][15]
を持つ構造体に、
BODY_player_t
という別名を付けた。つまり、intやcharなどと同様に、
BODY_player_t
という型があるものとして扱える。

そして、
BODY_player_t型の変数Playerを定義した。

という意味を持ちます。

> typedef struct{
>         int x,y,img;
> }ch_t;

この記述は、
int型のメンバーx,y,img
を持つ構造体に、
ch_t
という別名を付けた、というところまでです。
ch_t型の変数は、まだ定義していません。

> 一つ目はなぜ上にはBODYがつくのか?

そういう名前にした方がわかりやすい、と命名者が思ったからでありましょう。

> typedef struct{ 
>     double x,y; 
>     int status,counter; 
>     int shot [11][15]; 
> } player_t; 

> だけにしてはいけないのでしょうか?

問題ありません。名前の付け方だけの話です。
構造体の名前を付ける際、BODYを付けなければならないというような
決まりはありません。
プログラム全体で一意でありさえすれば、どういう名前でもかまいません。

situmon

Re:構造体について

#3

投稿記事 by situmon » 16年前

どうもありがとうございました。
名前の問題だったんですね。
大文字で書いてあるとなんか不思議な感じがしたので、
もやもやが解決したのでうれしかったです。
boxさん、ありがとうございました!

SooA

Re:構造体について

#4

投稿記事 by SooA » 16年前

typedef struct{ 
    double x,y; 
    int status,counter; 
    int shot [11][15]; 
} [color=#bbffbb>BODY_player_t[/color]; 

BODY_player_t Player; 

>一つ目はなぜ上にはBODYがつくのか?
[color=#bbffbb>BODY_player_t[/color]の部分は
タグ名と呼び、BODY_player_tという新しい型が定義されます。
タグの名称はプログラマーのセンスによって変わるので、
BODYという記述自体に特別な意味があるわけではありません。
(言葉の持つ意味としては Body:体、本体、メイン部分 )


>二つ目はなぜ下にBODY_player_t Player; という記述がしてあるのか?
構造体 Player を宣言しています。
[color=#bbffbb>BODY_player_t[/color]は型です。
例えば int Player; の int の部分に相当します。
ch_t型も別の場所でch_t型を使用するために宣言で使用されているはずですよ。


>また上を(略)だけにしてはいけないのでしょうか?
上の説明でもう解ると思いますが、
名称は個人のセンスで決まります。
プログラムを読みやすくするために、
タグ名とその変数だと区別できる
名称にしておくと良いですよ。

situmon

Re:構造体について

#5

投稿記事 by situmon » 16年前

追加の情報ありがとうございます!

non

Re:構造体について

#6

投稿記事 by non » 16年前

>BODY_player_tの部分は
>タグ名と呼び、BODY_player_tという新しい型が定義されます。

これも、タグ名って呼ぶのは間違いありませんか?
調べたけど、わからなかったので。。。

box

Re:構造体について

#7

投稿記事 by box » 16年前

> これも、タグ名って呼ぶのは間違いありませんか?

typedef名というのが正しいようです。
少なくともタグ名ではありません。

(構造体)タグとは、

struct XXX {
	/* ここにメンバーを定義する */
} YYY;

や

typedef struct XXX {
	/* ここにメンバーを定義する */
} ZZZ;

と書いたときの「XXX」のことです(省略可能)。

SooA

Re:構造体について

#8

投稿記事 by SooA » 16年前

訂正ありがとうございます。
boxさんの書いているように XXX の部分ですね。
ずっと間違えて覚えてました@@;

閉鎖

“C言語何でも質問掲示板” へ戻る