Tworzenie tablicy dynamicznej w funkcji

2015-01-24 01:32
0

Prosty problem, którego rozwiązanie dla mnie nie znane.

Co należy zrobić, jeżeli do funkcji mam zamiar przekazywać wskaźnik i w niej ustawiać go na "new int[size]" - linia 10
Robię tak, gdyż nie ma(nie znam) niczego na wzór "= new int[]", gdy nie znamy rozmiaru.

P.S. Poniższa funkcja ma konwertować liczbę składającą się z wielu cyfr na tablicę. Lokalnie działa, ale przez powyższy nieszczęsny problem stoję w miejscu. Jeżeli macie jakieś zastrzeżenia do jakości kodu, to proszę walić śmiało, ale z klasą. Przede wszystkim jednak chciałbym poznać rozwiązanie problemu. ;)

void intToArray(int number, int *intArray)
{
    int temp = number, i = -1, divider = 10;

    do{
        temp /= divider;
        i++;
    }while(temp > 0);

    intArray = new int[i];

    while(number > 0)
    {
        intArray[i] = number%divider;
        number /= divider;
        i--;
    }

    cout << intArray[0] << " " << intArray[1] << " " << intArray[2];
}
edytowany 1x, ostatnio: LaborTec, 2015-01-24 01:37
A ta funkcja ma tylko przerobić liczbę na tablice intów czy tez ma to wypisywać? - Westen 2015-01-24 02:27
Ma na celu "przerobienie " liczby na tablicę intów. Dalej działam na tablicy, nie wypisuję jej poza momentem debugowania, aby sprawdzić czy są w niej poprawne wartości. - LaborTec 2015-01-24 11:24

Pozostało 580 znaków

2015-01-24 02:42
0
int* intToArray(int number, int* intArray)
{
    ...    
    intArray = new int[i];
    ...
    return intArray;
}
Niestety powyższe przynosi mi ten sam rezultat. Czyli śmieci z pamięci. :/ - LaborTec 2015-01-24 11:21

Pozostało 580 znaków

2015-01-24 12:13

Niestety powyższe przynosi mi ten sam rezultat. Czyli śmieci z pamięci. :/

Bo ta funkcja ma wyglądać tak:

int *intToArray(int number)

A jeżeli już koniecznie musisz przekazywać wynik przez parametr a nie wartość zwracaną to tak (należy użyć referencji lub wskaźnika na wskaźnik):

void intToArray(int number, int *&intArray)

"(...) otherwise, the behavior is undefined".
edytowany 1x, ostatnio: Endrju, 2015-01-24 12:14
Działa, dziękuję bardzo. - LaborTec 2015-01-24 18:38

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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