は、ではありません。
const char *
を返すと、関数のセマンティクスを改善できます(すなわち、私があなたに与えているものを混乱させることはありません)が、char *
を返すことはまったく問題ありません。
しかし、いずれの場合も、あなたはははあなたのために、メモリを(すなわちmalloc
またはnew
を使用して割り当て)my_function
にヒープに割り当てられたchar *
またはconst char *
、そうでない場合はいつでもmy_function
リターンを返すことを確認する必要があります[const] char *
は割り当てが解除され、無効なポインタにアクセスします。
そして最後に、あなたははfree
またはdelete
あなたはそれで終わった、またはあなたがメモリリークが発生します一度、あなたに返却されています[const] char *
をに覚えておく必要があります。 C/C++のような偉大な言語ではありませんか?
ので、Cには、あなたは、「文字列リテラル」を返す機能を持っている場合、それは*のconst char型を返す必要があります
const char *my_function() {
const char *my_str = (const char *)malloc(MY_STR_LEN + 1); // +1 for null terminator.
/* ... */
return my_str;
}
int main() {
const char *my_str = my_function();
/* ... */
free(my_str);
/* ... */
return 0;
}
main()は常にintを返す必要があります。 http://users.aber.ac.uk/auj/voidmain.shtml – nmuntz