0

整数配列とその長さを引数として受け取る逆関数を作成します。関数は配列の内容を反転し、反転した値を元の配列に残し、何も返さないようにする必要があります。

 #include<iostream>

    using namespace std;

    void printArray(int a[], const int n)
    {
        for(int i=0;i<n;i++)
        {
            cout<<a[i];
            i!=n-1 ? cout<<", " : cout<<"";
        }
    }

    void reverse(int a[], const int n)
    {
        int reverse[n];
        for(int i=0;i<n;i++)
        {
            reverse[n-1-i]=a[i];
        }
        a = reverse;
    }

    int main()
    {
        int *a,n;
        cin>>n;
        a = new int[n];
        for(int i=0;i<n;i++)
            a[i]=0;
        a[0]=1;
        reverse(a,n);
        printArray(a,n);
        delete [] a;
        a = NULL;
        return 0;
    }

リバース関数を呼び出した後、メインの配列が変更されていません。アドバイスをお願いします! :(

4

4 に答える 4

0

int a[]のポインタであるを渡す必要があることはわかっていますが、それでも同じ問題が発生します。に &a を渡さない限り、 に格納されているポインターを変更することはできません。areverse()areverse()

于 2013-09-26T16:29:37.417 に答える