- ベストアンサー
C言語でのconstを返す関数
お世話になります。 C言語では、const の関数というのを認めているようですが、どうも使い方が分かりません。 const int foo() { これは通常のint foo()とどのように違うのでしょうか。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
constな値を返す関数で、唯一、意味があるのは const char *DayOfWeek(int Day) { switch (Day) { case SUNDAY: return "Sunday"; case MONDAY: return "Monday"; (以下略) のような「(静的メモリにある)固定の値を返す関数」のみ。 返されたポインタは「constな文字列」なので、返り値はconst char *になります。 この他「構造体のポインタを返すが、ユーザーが、その構造体を書き替えてはいけない場合」にも、関数を「const struct タグ名 *を返す」として定義します。 例えば、システムのプロパティを返す関数とかでは、返されたポインタの構造体を書き変えてもシステムのプロパティが変更される訳じゃないから、返されたポインタの中身を書き変え出来ないよう、constな構造体のポインタを返す、と宣言したりします。 >これは通常のint foo()とどのように違うのでしょうか。 何も違いません。同じです。 1つだけはっきりしてるのは「ポインタを返す関数に付けないと、constは意味が無い」と言う事です。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
「なにも違わない」はず. ちなみにそれは「const な値を返す」とは言わない>#2. 「返している値」そのものは const になっていない.
お礼
なるほど。つまり、静的な値を返すときだけではなく、constで宣言された変数のポインタを返すときなどもこのようにするということでしょうか。 ありがとうございました。
ほとんどの場合無意味で無効果
お礼
ご回答ありがとうございました。 すっきりしました。
お礼
ご丁寧なご説明、ありがとうございました。 非常に良く解りました。