retstrの関数宣言文のエラーです。
「prog.cpp:5: エラー: '[' トークンの前に unqualified-id が必要です prog.cpp:5: エラー: '[' トークンの前に初期化子が必要です」
コードは次のとおりです。
#include<stdio.h>
#include<math.h>
int n;
char *[] retstr(int k)
{
char* ans[10];
return(ans);
}
配列を返すことは、C++ でできることではありません。
関数は実際には の最初の要素へのポインターを返しますがans
、これも悪いニュースです。その配列はスタック上で宣言され、関数が戻るとすぐに範囲外になるためです。
正しいことは、C++ 標準ライブラリから適切なデータ構造を選択して使用することです。何らかの理由で基本型に設定されている場合は、別の解決策を考え出す必要があります。たとえば、関数内で配列を動的に割り当てて、それへのポインターを返すなどです。
これを試して:
#include<stdio.h>
#include<math.h>
int n;
char ** retstr(int k)
{
char** ans = (char**) malloc(10 * sizeof(char*));
return ans;
}