C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++関数からローカル配列を返す方法は?


ローカル配列は、関数呼び出し後にメモリに存在しない可能性があるため、C++関数から直接返すことはできません。これを解決する方法は、関数で静的配列を使用することです。静的配列の存続期間はプログラム全体であるため、上記の問題なしにC++関数から簡単に返すことができます。

これを実証するプログラムは次のとおりです。

#include <iostream>
using namespace std;
int *retArray() {
   static int arr[10];
   for(int i = 0; i<10; i++) {
      arr[i] = i+1;
   }
   return arr;
}
int main() {
   int *ptr = retArray();
   cout <<"The array elements are: ";
   for(int i = 0; i<10; i++) {
      cout<< ptr[i] <<" ";
   }
   return 0;
}

出力

上記のプログラムの出力は次のとおりです。

The array elements are: 1 2 3 4 5 6 7 8 9 10

上記のプログラムを理解しましょう。

関数retArray()では、静的配列arrが定義されています。次に、forループを使用してこの配列を初期化します。最後に、配列arrが返されます。これを示すコードスニペットは次のとおりです。

int *retArray() {
   static int arr[10];
   for(int i = 0; i<10; i++) {
      arr[i] = i+1;
   }
   return arr;
}

main()関数では、関数retArray()が呼び出され、ptrは配列arrの先頭を指します。配列要素は、forループを使用して表示されます。これを示すコードスニペットは次のとおりです。

int main() {
   int *ptr = retArray();
   cout <<"The array elements are: ";
   for(int i = 0; i<10; i++) {
      cout<< ptr[i] <<" ";
   }
   return 0;
}

  1. JavaScript関数からオブジェクトを返す方法は?

    JavaScript関数からオブジェクトを返すには、 returnを使用します ステートメント、 this キーワード。 例 次のコードを実行して、JavaScipt関数からオブジェクトを返すことができます- <html>    <head>       <script>          var employee = {             empname: "David"

  2. newを使用してC++で2D配列を宣言するにはどうすればよいですか

    動的2D配列は、基本的に配列へのポインターの配列です。これは、寸法が3x4の2D配列の図です。 アルゴリズム Begin    Declare dimension of the array.    Dynamic allocate 2D array a[][] using new.    Fill the array with the elements.    Print the array.    Clear the memory by deleting it. End サンプルコード