2017-01-28 6 views
-2

私はC++プログラムを持っています。私は整数配列を初期化する関数を持っていますが、メインに渡す方法はわかりません。私はこの方法で試しましたが、多くのエラーがあります。関数からメインに配列を渡す方法 - C++

MAIN

#include <stdio.h> 
#include <stdlib.h> 
#include <iostream> 

using namespace std; 

int readArray1(); 


int nArray1, nArray2; 

int main() { 

    int firstArray[nArray1]; 
    int secondoVettore[nArray2]; 

    firstArray[nArray1] = readArray1(); 
    secondArray[nVettore2] = readArray2(); 

    system("pause"); 
    return 0; 

} 

ReadArray1

int readArray1() { 


    int array[nArray1]; 

    cout<<"Insert the length of the array: "<<endl; 
    cin>>nVettore1; 

    for(int i=0; i<nArray1; i++) { 
     cout<<"Insert the"<<i+1<<" element of the array: "<<endl; 
     cin>>array[i]; 
    } 

    return array[nArray1]; 
} 
+0

あなたは 'std :: vector <>'を使用します(少なくとも私はそうです)。 – WhozCraig

+0

他の人があなたを助けてくれることを期待するために、明らかに自分自身で十分な努力を払っていなかったので、どのようなタイプ、値、機能の仕組みについて読んでください。 – szpanczyk

+1

[関数内の配列を返す]の可能な複製(http://stackoverflow.com/questions/3473438/return-array-in-a-function) –

答えて

0

あなたが関数から配列全体を返すことはできません。しかし、あなたの関数に入っている配列のアドレスを返すことができます。

これを行うには、ポインタでアドレスを返すように関数を変更し、変数を使用してアドレスを格納し、その位置を指すようにします。必要なコードになるあなたの例の一部の変更:あなたがもう一度、ポインタを使用し、配列にアクセスしたい場合は、その後

#include <stdio.h> 
#include <stdlib.h> 
#include <iostream> 
using namespace std; 
int nArray1=10; 
int * readArray1() { 
    static int array[10]; 
    for(int i=0; i<10; i++) { 
     cout<<"Insert the"<<i+1<<" element of the array: "<<endl; 
     cin>>array[i]; 
     cout<<&array[i]; 
    } 
    return array; 
} 
int main() { 
    int * firstArray; 
    firstArray = readArray1(); 
    system("pause"); 
    return 0; 
} 

を(配列を出力しますCOUT < < *(firstArrayと+ 2)のように[2])。また、静的関数で配列を宣言する必要があることにも注意してください(より大きな配列を宣言するだけで可変サイズが必要な場合)。

0

std :: vectorは大きな助けです。

std::vector<int> readarray() 
    { 
     std::vector<int> answer; //. answer is here the empty array 

     while(acondition) 
     { 
     int x = input(): 
     answer.push_back(x); 
     } 

    return answer; 
    } 

それはものの呼び出しが失敗したときのために裸のmallocとreallocのへの呼び出し、およびロジックを必要とするCメソッド単位として配列を扱うことができるという非常に簡単です。むしろちょっとしたテンプレート構文では避けてください。

関連する問題