Wskaźniki

0

Witam. Mam problem z kodem

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

void add(int** ptab, int n, int new_elem)
{
    if(ptab != NULL)
    {
        int* tablica = malloc((n+1)*sizeof(int));

        if(tablica != NULL)
        {//udalo sie utworzyc tablice
            int i = 0;

            for(; i < n; i++)
            {//dla n = 0 nie wywoluje sie (dzieki czemu nie ma bledu)
                tablica[i] = (*ptab)[i];
            }

            tablica[n] = new_elem;

            free(*ptab);
            *ptab = tablica;
        }
    }
}

main()
{
    int* tablica = NULL;
    int n = 0;

    for(; n<10; n++) add(&tablica, n, 3*n);

    if(tablica != NULL)
    {
        for(n=0; n<10; n++) printf("%d ", tablica[n]);
        printf("\n");
        free(tablica);
    }
}

Konkretnie chodzi mi o wiersz 6, dlaczego działa skoro wcześniej ustawiamy ten wskaźnik na NULL? I co oznaczają dwa **.

2

**p to wskaźnik do wskaźnika p. A wskaźnik tablica modyfikujesz w funkcji add.

2

Spytaj autora tego kodu.
Lub przeczytaj pierwszy lepszy kurs C++, pytasz o elementarne podstawy.

0

@pingindykator: dzięki, pomogło.

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