すべてのカテゴリ » インターネット・パソコン » 技術・プログラミング

質問

終了

C言語について。
void read_data(FILE*,FILE*,XXX*);についての質問です。

ヘッダーファイルに記入されているvoid read_data(FILE*,FILE*,XXX*);
最後の*は何を意味するのか教えてもらえませんか?
C言語初心者で勉強中のため、初歩的質問でしたら申し訳ないです。

  • 質問者:妙花闌曲
  • 質問日時:2008-12-05 08:10:03
  • 0

ポインタ=アドレスです。この関数には第1引数にはFILEへのポインタ(FILE型の変数のコンピュータ上のアドレス=ポインタ=位置)、第2引数も同じ、第3引数はXXX型の変数へのポインタを意味します。

int *p;

と言う表記だと、pと言う変数の中身はアドレスを意味しますから

int *p;
int f;

と言う変数宣言の場合、

p = &f; (fのポインタをxに代入する)

で、pにはfと言う変数のポインタ(コンピュータ上の所在地)が入ります。なので、

*p = 6;

とか書くと、pの指し示す位置に6を格納せよと言う意味になり、pの指し示す位置はfが存在している位置ですからfの中身が6になります。

ヘッダファイルでの関数の宣言の場合は変数名を省略できるので、

void read_data(FILE*, FILE*, XXX*);



void read_data(FILE *f1, FILE *f2, XXX *x);

と書いたのと同じ事になり、それぞれの引数はポインタを要求していると読む事が出来る訳です。関数を呼び出す時は、

FILE file1;
FILE file2;
XXX data;

read_data(&file1, &file2, &data);

と言う格好で呼び出す事になります。また既にポインタを宣言して操作していた場合、

FILE file1;
FILE file2;
XXX *pdata;
XXX data;

pdata = &data;

read_data(&file1, &file2, pdata);

の様な呼び出し方も有ります。

この回答の満足度
  
とても参考になり、非常に満足しました。回答ありがとうございました。
お礼コメント

詳しい説明ありがとうございました。
なるほど、勉強になりました感謝します。

並び替え:

変数名を省略してるという意味です。

  • 回答者:匿名希望 (質問から19分後)
  • 0
この回答の満足度
  
とても参考になり、非常に満足しました。回答ありがとうございました。

関連する質問・相談

Sooda!からのお知らせ

一覧を見る