プロが教えるわが家の防犯対策術!

CとC++初心者です。
aaa(struct bbb *)という関数があります。
ある程度勉強したのですが、*bbbのように変数の前につくのはポインタだとわかりましたが、後につくのは何でしょうか?
ヘルプにも出てきません。
よろしくお願いします。

また、ヘッダファイルを見て、そのソースがcかc++か区別する方法はありますか?

A 回答 (3件)

これはプロトタイプ宣言ですね。


関数の型を予め宣言しておくものです。

int func (int, char*);
というような書き方で、実際の関数は
int func (int a, char* b)
{
 :
}
のようになります。

つまり、aaa (struct bbb*) というのは、aaaと言う関数の引数は struct bbb のポインタ型です、と予め宣言しているのです。
関数の実体ではちゃんと変数名が割り当てられていると思いますよ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
では、呼び出し側はどのようにすればよいのでしょうか?

bbb *c;
aaa(c);
でもエラーになるし、bbb* c; aaa(c)でもエラーになってしまいます。。。

お礼日時:2003/05/22 20:14

> では、呼び出し側はどのようにすればよいのでしょうか?


構造体定義
----
struct bbb
{
  :
}
----

呼び出し側
----
struct bbb* c;
aaa (c);
----

呼び出される側
----
int aaa (struct bbb* c)
{
  :
}
----

でコンパイルは出来ます。

[補足]
構造体の宣言が
typedef struct
{
  :
}bbb;

となっている場合は、


呼び出し側
----
bbb* c;
aaa (c);
----

呼び出される側
----
int aaa (bbb* c)
{
  :
}
----

となります。
    • good
    • 0
この回答へのお礼

お礼が遅れて申し訳ありません。
詳しい説明、ありがとうございました。

お礼日時:2003/06/01 20:20

bbbは変数名ではありません。


bbbという構造体のポインタです。

ヘッダファイルを見て、CかC++か判断するには、クラス宣言をヘッダに記述していればC++と判断できます。
    • good
    • 0
この回答へのお礼

お礼が遅れて申し訳ありません。
どうもありがとうございました。

お礼日時:2003/06/01 20:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!