1. ホーム
  2. c++

[解決済み】関数の中で配列を返す

2022-04-06 13:57:29

質問

私は、配列 int arr[5] 関数に渡される fillarr(int arr[]) :

int fillarr(int arr[])
{
    for(...);
    return arr;
}

  1. その配列を返すにはどうしたらいいですか?
  2. ポインターを返したとして、それをどのように使うのか、どうやってアクセスするのか?

どのように解決するのですか?

この場合、配列変数 arr は、暗黙の変換により、実際にはメモリ上の配列ブロックの先頭へのポインタとして扱うこともできます。 この構文は、あなたが使っているものです。

int fillarr(int arr[])

は単なる構文上の糖分のようなものです。 本当にこれに置き換えることができ、まだ動作します。

int fillarr(int* arr)

つまり、同じ意味で、関数から返したいものは、実は配列の最初の要素へのポインタなのです。

int* fillarr(int arr[])

そして、通常の配列と同じように使用することができます。

int main()
{
  int y[10];
  int *a = fillarr(y);
  cout << a[0] << endl;
}