GetOldMonthName()でif文に入らなかった時(13月とか)はどうするのしょうか?
・・・ワーニングにならないのかなぁ・・・
clang version 13.0 →warning: non-void function does not return a value in all control paths
usr ~/Project/cpp % ./a.out
13
Segmentation fault (core dumped)
発生している問題・エラーメッセージ
現在ポインタについて学習中なのですが、入力した数字に対応する月の名前を返す関数GetOldMonthを作成するという問題で下記のようなソースコードを作成しました。 ポインタに格納されたアドレスが指す値を参照するには「*ポインタ名」とすると思うのですが、下記のプログラムで「*name」とすると先頭の一字のみ出力されます。(3月の場合はyなど) なぜ、「*name」ではなく「name」で正しく出力がされるのでしょうか? 初歩的な質問で申し訳ありませんがご回答いただけると幸いです。よろしくお願いします。
該当のソースコード
C++
1 2const char* const MONTH_NAME[]= 3{ 4 "mutsuki","kisaragi","yayoi","uduki", 5 "satsuki","minatsuki","hutsuki","hatsuki", 6 "nagatsuki","kannaduki","shimotsuki","shiwasu" 7}; 8 9const char* GetOldMonthName(int month) 10{ 11 if(1<=month&&month<=12) 12 { 13 return MONTH_NAME[month-1]; 14 } 15} 16 17int main() 18{ 19 int month; 20 std::cin>>month; 21 const char * name=GetOldMonthName(month); 22 std::cout<<name; 23} 24