0

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);
}
4

4 に答える 4

0
  1. 配列を返すことは、C++ でできることではありません。

  2. 関数は実際には の最初の要素へのポインターを返しますがans、これも悪いニュースです。その配列はスタック上で宣言され、関数が戻るとすぐに範囲外になるためです。

正しいことは、C++ 標準ライブラリから適切なデータ構造を選択して使用することです。何らかの理由で基本型に設定されている場合は、別の解決策を考え出す必要があります。たとえば、関数内で配列を動的に割り当てて、それへのポインターを返すなどです。

于 2013-07-04T20:58:40.030 に答える
0

これを試して:

#include<stdio.h>
#include<math.h>
int n;
char ** retstr(int k)
{
    char** ans = (char**) malloc(10 * sizeof(char*));
    return ans;
}
于 2013-07-04T21:20:23.123 に答える