OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

C言語の文法(変数宣言)について

  • 暇なときにでも
  • 質問No.226807
  • 閲覧数158
  • ありがとう数2
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 55% (56/101)

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

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

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

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

いま、手元に「新ANSI C言語辞典」という本があるのですが、説明を読んでもよくわかりません。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3

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

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

[]の中は要素数だと思います。
補足コメント
aabbccddeeff

お礼率 55% (56/101)

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

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

やっぱりそうですよね。

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

あれは関係ないんですよね?
投稿日時 - 2002-02-28 19:31:56
お礼コメント
aabbccddeeff

お礼率 55% (56/101)

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


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

(定かではないかもしれませんが、)ポインタ修飾子って言うんですね。
投稿日時 - 2002-02-28 19:38:31
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル12

ベストアンサー率 40% (201/496)

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

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

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

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

お礼率 55% (56/101)

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

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

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

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


  • 回答No.2
レベル12

ベストアンサー率 75% (398/526)

# 初めに言ってしまうと、それは「気にすべきではない分野」の1つです(笑) Cでの「宣言」は、「宣言指定子」のリストと「宣言子」のリストで構成されます。 int や char などは「宣言指定子」であり、その中の「型指定子」に分類されます。 また、hoge や *piyo、c[10] は「宣言子」になります。 で、* なんですけど、これはあくまで「ポインタ演算子」です。 宣言で使えば「宣 ...続きを読む
# 初めに言ってしまうと、それは「気にすべきではない分野」の1つです(笑)

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

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

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

お礼率 55% (56/101)

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

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

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

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

演算を行わないのに演算子なのかなあ、と思ってしまうのです。
投稿日時 - 2002-02-28 19:14:43
  • 回答No.4

補足します。 >(定かではないかもしれませんが、)ポインタ修飾子って言うんですね。 宣言において、* が宣言子の1つであり、さらに細分化して、修飾子と呼ぶ事は一般的だと思います。 * をポインタ修飾子、[] を配列修飾子、() を関数修飾子と記述されているものを見た事はありますが、一般的かどうかという点で、自信はありません。 >演算子って言ったら、演算子の優先順位表ってあるじゃないです ...続きを読む
補足します。

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

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

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

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

int *func();

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

int (*func)();

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

お礼率 55% (56/101)

>宣言にも優先順位はあります。例えば、
ここ以下の話は、「宣言にも優先順位はあり、その優先順位は演算子の優先順位と同じなので、演算子の優先順位の表を当てはめて考えても支障はないです。」ということですね。
投稿日時 - 2002-03-03 12:09:15
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ