Я не могу назначить указатель на массив, а затем изменить содержимое массива - PullRequest
0 голосов
/ 01 февраля 2020

Я не мог понять, как заставить функцию возвращать массив, поэтому вместо этого я решил попытаться передать пустой массив (правильного размера) в свою функцию, а затем переназначить адрес другому массиву того же размера. , Это вообще способ делать вещи ??? Может кто-нибудь показать мне, что делать? если это не так, можете ли вы сообщить мне, как это сделать?

вот мой код:

#include <iostream>
#include <cmath>

using namespace std;

void ArrayFiller(int earray,int s, int f){
    int *ptrarray = &earray;
    int prenum_size = std::abs(s) + f - 1;
    int pre_num[prenum_size];
    for(int x=s;x<f;x++){
        pre_num[x+std::abs(s)] = x;
    }
    *ptrarray = pre_num;
}


int Main(){
    int first = -10;
    int second = 15;
    int temp[abs(first) + abs(second)];
    ArrayFiller(temp, first, second);


    int n = sizeof(temp)/sizeof(temp[0]);

        for (int i = 0; i < n; i++) {
            cout << temp[i] << ' ';
        }

    return 0;
}

1 Ответ

1 голос
/ 02 февраля 2020

Я думаю, вы ищете что-то вроде этого:

#include <iostream>
#include <cmath>

using namespace std;

void ArrayFiller(int earray[],int s, int f){
    for(int x=s;x<f;x++){
        earray[x+(std::abs(s))] = x;
    }
}

int main(){
    int first = -10;
    int second = 15;
    int n = abs(first)+abs(second);

    int* temp = new int[n];
    ArrayFiller(temp, first, second);

    for (int i = 0; i < n; i++) {
        cout << temp[i] << ' ';
    }

    delete [] temp;

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...