構造体のポインタについて

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

構造体のポインタについて

#1

投稿記事 by N_Angelo » 14年前

構造体のポインタの書き方について質問です。

コード:

typedef struct{
int *no;
char *name;
}student;
といった書き方を見ますが、これは

コード:

typedef struct{
int no;
char name;
}student;

student data,*pdata;
pdata = &data;
と何が違うのでしょうか?
メンバ変数に*をつける意味がよくわからないので、ここで質問させていただきました。

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: 構造体のポインタについて

#2

投稿記事 by beatle » 14年前

まったく違います。
前者の、メンバ変数をポインタにした場合は、配列へのポインタを格納したりできます。
対して、後者の場合はint型、char型の整数を入れることしかできません。

コード:

typedef struct {
    int *no;
} student;

student s;
int x[128];
s.no = x;

box
記事: 2002
登録日時: 15年前

Re: 構造体のポインタについて

#3

投稿記事 by box » 14年前

構造体のメンバーではない場合の

コード:

    int no;
    int *no;
の区別は付いていますよね。
構造体のメンバーである場合も、全く同じことです。
構造体のことをむずかしく考えすぎていませんか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

N_Angelo

Re: 構造体のポインタについて

#4

投稿記事 by N_Angelo » 14年前

>beatleさん
お返事ありがとうございます。
beatleさんの情報を元に色々調べてみようと思います。

>boxさん
お返事ありがとうございます。
boxさんの情報を元にいくと、

コード:

typedef struct{
int no;
char name;
}student;

student data;
data.no;
のdata.noと

コード:

int no;
char name;
のnoは同じで、

コード:

typedef struct{
int *no;
char *name;
}student;

student data;
data->no;
のdata->noと

コード:

int *no;
char *name;
のint *noは同じということでしょうか?
後、書き忘れていましたが、使用している言語はC言語です。

box
記事: 2002
登録日時: 15年前

Re: 構造体のポインタについて

#5

投稿記事 by box » 14年前

N_Angelo さんが書きました:

コード:

typedef struct{
    int *no;
    char *name;
}student;

student data;
data->no;
変数dataはstudent型の実体である(student型へのポインターではない)ため、
data->no
という書き方はできません。
student型(構造体型)へのポインターの話と、構造体のメンバーがポインターである話とが
ゴッチャになっていないでしょうか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

N_Angelo

Re: 構造体のポインタについて

#6

投稿記事 by N_Angelo » 14年前

言われて気づきましたが、ゴッチャになってますね…。
構造体型へのポインタとメンバ変数がポインタである場合の部分を勉強してきます…。
box さんが書きました:
N_Angelo さんが書きました:

コード:

typedef struct{
    int *no;
    char *name;
}student;

student data;
data->no;
変数dataはstudent型の実体である(student型へのポインターではない)ため、
data->no
という書き方はできません。
student型(構造体型)へのポインターの話と、構造体のメンバーがポインターである話とが
ゴッチャになっていないでしょうか。

閉鎖

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