Operowanie funkcjami na taablicach z wykorzystaniem wskaznikow//c++

0

Hej,
Probuję napisać program, gdzie nadaje rozmiar dwóm tablicom i przypisuje do nich randomowe wartości. Następnie za pomocą jednej funkcji chciałbym przepisać wartości z tablicy1 do tablic2, a za pomocą drugiej funkcji zapisać wyniki z tablicy2 do tablicy1. Od razu zaznaczę, że nie chodzi mi o typowy swap. Chodzi mi o to, aby wiedzieć jak operować wieloma funkcjami na pierwotnych wartościach tablic. Próbowalem użyc wskaznikow, ale jeszcze do konca nie umiem z ich korzystac. Uczę się programowania dopiero od 3 tygodni.


#include <iostream>
using namespace std;

void swapArrays(int size, int const* array1, int* array2) {
    for (int i = 0; i < size; i++) {
        array2[i] = array1[i];
    }

}
void swapArrays2(int size, int *array1, int const* array2) {
    for (int i = 0; i < size; i++) {
        array1[i] = array2[i];
    }

}
int main()
{
    srand(time(NULL));
    int size;

    cout << "Podaj rozmar tablic: ";
    cin >> size;

    int* myFirstArray = new int[size];
    int* mySecondArray = new int[size];
    int* ptrFirst = myFirstArray;
    int* ptrFirst2 = myFirstArray;
    int* ptrSecond = mySecondArray;
    int* ptrSecond2 = mySecondArray;
    
    for (int i = 0; i < size; i++) {
       myFirstArray[i] = (rand()%100);
       cout << myFirstArray[i] << " ";
    }

    cout << endl;

    for (int i = 0; i < size; i++) {
        mySecondArray[i] = (rand() % 100)*((rand()%3+1));
        cout << mySecondArray[i] << " ";
    }

    cout << endl;

    swapArrays(size, ptrFirst, ptrSecond);

    for (int i = 0; i < size; i++) {      
        cout << *(ptrFirst+i) << " ";
    }

    cout << endl;

    for (int i = 0; i < size; i++) { 
        cout << *(ptrSecond+i) << " ";

    }

    cout << endl;

    swapArrays2(size, ptrFirst2, ptrSecond2);

    for (int i = 0; i < size; i++) {
        cout << *(ptrFirst2+i) << " ";
    }

    cout << endl;

    for (int i = 0; i < size; i++) {
        cout << *(ptrSecond2+i) << " ";
    }

    return 0;
}


3

To że skopujesz sobie wskaźnik na tablicę, nic nie zmienia w tym, że nie kopiujesz pamięci pod spodem. Więc tak naprawdę, to że posiadasz ptrFirst i ptrFirst2 nic zupełnie nie zmienia - zawartość pod oboma będzie zawsze identyczna:
photo_2021-10-31_16-36-12.jpg

Aby osiągnąć to co chcesz, musiałbyś mieć trzecią tablicę na ten cel.

1 użytkowników online, w tym zalogowanych: 0, gości: 1