C言語でパラメータとしてintを取得し、char配列(または文字列)を返す関数を記述しようとしています。Cの文字列の代わりにint値を返す関数
const char * month(int x)
{
char result[40];
if(x<=31) strcpy(result,"can be a day of the month");
else strcpy(result,"cannot be a day of the month");
return result;
}
しかし、私の関数は文字列ではなくintを返します。私は人が似たような状況に遭遇したかもしれない投稿を読んだが、ポインタ型関数がどのように機能するのか、そしてそれらを私が望むものに戻す方法を理解できない(私はポインタについて少し説明している。彼らは一人で働いていますが、解決策をより効果的にするなど、いくつかの機能を追加するコードを書くことは一度もありません。)
関数戻り失われます自動スコープを持つオブジェクトで 'result'。返されるポインタは無効で、逆参照は未定義の動作です。 –
'result'は、関数が終了するときのスコープと寿命から外れます。このように多くのSOの質問があります。 –
このCコードまたはC++コードですか? 2つの言語の答えは全く異なります。 –