C言語の文法の質問をさせていただきます。

int hoge;
などと宣言しますが、このintというのは型指定子というものでしょうか。

int *piyo;
という宣言のintも型指定子でしょうか。
この場合、* はなんと呼ばれるのでしょうか。(アスタリスクという記号です、という回答は期待していません。(^_^;)) ポインタ宣言子、でいいのでしょうか。これは「演算子」ではないんですよね?

char c[10];
という宣言の[ ]やその中に入っている10はなんと呼ばれるのでしょうか。

いま、手元に「新ANSI C言語辞典」という本があるのですが、説明を読んでもよくわかりません。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

私の場合、演算子と呼ぶのに抵抗があるので、



例えば、「ポインタを宣言する場合は int *piyo のように、宣言子 piyo を * で修飾する」という感じで、ポインタ修飾子と呼んでいますが、定かではありません。

[]の中は要素数だと思います。

この回答への補足

int *piyo;
という宣言の * についてですよね。

>私の場合、演算子と呼ぶのに抵抗があるので、

やっぱりそうですよね。

演算子って言ったら、演算子の優先順位表ってあるじゃないですか、
あれを気にしなきゃいけなくなるように思えてくるんです。

あれは関係ないんですよね?

補足日時:2002/02/28 19:31
    • good
    • 0
この回答へのお礼

ご回答有難うございます。


>ポインタ修飾子と呼んでいますが、定かではありません。

(定かではないかもしれませんが、)ポインタ修飾子って言うんですね。

お礼日時:2002/02/28 19:38

補足します。



>(定かではないかもしれませんが、)ポインタ修飾子って言うんですね。

宣言において、* が宣言子の1つであり、さらに細分化して、修飾子と呼ぶ事は一般的だと思います。
* をポインタ修飾子、[] を配列修飾子、() を関数修飾子と記述されているものを見た事はありますが、一般的かどうかという点で、自信はありません。

>演算子って言ったら、演算子の優先順位表ってあるじゃないですか、
>あれを気にしなきゃいけなくなるように思えてくるんです。

宣言にも優先順位はあります。例えば、

int *func();

この宣言には、int, *, func, () の4つの宣言子があって、* と func よりも func と () が優先されるから、これが関数の宣言であると解釈されるわけですよね?

int (*func)();

そして、この場合は、* と func が優先されるので、関数へのポインタと解釈されます。どちらの場合も、一般的な演算子の優先順位と同じなので、優先順位があった方が理解しやすいと思います。

この回答への補足

>宣言にも優先順位はあります。例えば、
ここ以下の話は、「宣言にも優先順位はあり、その優先順位は演算子の優先順位と同じなので、演算子の優先順位の表を当てはめて考えても支障はないです。」ということですね。

補足日時:2002/03/03 12:09
    • good
    • 0

# 初めに言ってしまうと、それは「気にすべきではない分野」の1つです(笑)



Cでの「宣言」は、「宣言指定子」のリストと「宣言子」のリストで構成されます。
int や char などは「宣言指定子」であり、その中の「型指定子」に分類されます。
また、hoge や *piyo、c[10] は「宣言子」になります。

で、* なんですけど、これはあくまで「ポインタ演算子」です。
宣言で使えば「宣言子としてのポインタ演算子」となるわけです。
別に、演算を行うから演算子、というわけではないようです。
同様に、配列の宣言に使う場合の [ ] や 10 も、* 特別な呼び方はないようです。
[ ] は配列演算子だし、10 は定数式です。

ただし「宣言」においては、これらは「宣言子」の下階層に位置するので、* を「ポインタ宣言子」と呼んだり、[ ] を「配列宣言子」と呼んだとしても、(通じれば)問題はないでしょう。

この回答への補足

># 初めに言ってしまうと、それは「気にすべきではない分野」の1つです(笑)

質問した本人がいうのもなんですが、それは言えていると思います。(笑い)

ご回答はなんべんも読ませていただきますが、私の頭ではよくわかりません。
やっぱり気にしないようにします。(笑)

でもすみません、やっぱり以下の部分が気になります。
>で、* なんですけど、これはあくまで「ポインタ演算子」です。
>別に、演算を行うから演算子、というわけではないようです。

演算を行わないのに演算子なのかなあ、と思ってしまうのです。

補足日時:2002/02/28 19:14
    • good
    • 0

>int hoge;


>などと宣言しますが、このintというのは型指定子というものでしょうか。
はい

>int *piyo;
>という宣言のintも型指定子でしょうか。
そです。

>この場合、* はなんと呼ばれるのでしょうか。(アスタリスクという記号です、という回答は期 待していません。(^_^;)) ポインタ宣言子、でいいのでしょうか。これは「演算子」ではないん ですよね?
演算子ではないです。あまり*そのものを何て呼ぶかは聞いたことはないですね。int* でポインタ宣言、と言うのでポインタ宣言子でいいんじゃないでしょうか。

>char c[10];
>という宣言の[ ]やその中に入っている10はなんと呼ばれるのでしょうか。
要素数、でしょうかね。

参考URL:http://black.sakura.ne.jp/~third/c.html

この回答への補足

ご回答にはたいへん感謝いたします。

>あまり*そのものを何て呼ぶかは聞いたことはないですね。

* はなんなのか、なんて考える人はいないのかなあ(笑)

でもご回答を読んでひとつ思いました。
>>int *piyo;
>>という宣言のintも型指定子でしょうか。
>そです。
int* がポインタ宣言子であって、その中のintが型指定子というなら、intを除いた * の部分にも名前があるんじゃないかなあ、というふうに思いました。
 ないものはないんでしょうかねえ。

補足日時:2002/02/28 19:00
    • good
    • 0

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


人気Q&Aランキング