• ベストアンサー

C言語でのconstを返す関数

お世話になります。 C言語では、const の関数というのを認めているようですが、どうも使い方が分かりません。 const int foo() {  これは通常のint foo()とどのように違うのでしょうか。  よろしくお願いいたします。

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

  • ベストアンサー
回答No.2

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は意味が無い」と言う事です。

annyG
質問者

お礼

ご丁寧なご説明、ありがとうございました。 非常に良く解りました。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

「なにも違わない」はず. ちなみにそれは「const な値を返す」とは言わない>#2. 「返している値」そのものは const になっていない.

annyG
質問者

お礼

なるほど。つまり、静的な値を返すときだけではなく、constで宣言された変数のポインタを返すときなどもこのようにするということでしょうか。 ありがとうございました。

noname#208124
noname#208124
回答No.1

ほとんどの場合無意味で無効果

annyG
質問者

お礼

ご回答ありがとうございました。 すっきりしました。

関連するQ&A