Wskaźniki

Odpowiedz Nowy wątek
2013-12-29 19:28

Rejestracja: 8 lat temu

Ostatnio: 6 lat temu

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 **.

!Zmień tytuł na sensowny opisujący problem, bo wątek zaraz wyląduje w koszu... - madmike 2013-12-29 19:37

Pozostało 580 znaków

2013-12-29 19:31

Rejestracja: 7 lat temu

Ostatnio: 6 godzin temu

Lokalizacja: Kraków

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


edytowany 2x, ostatnio: pingwindyktator, 2013-12-29 19:36

Pozostało 580 znaków

2013-12-29 19:33

Rejestracja: 14 lat temu

Ostatnio: 11 godzin temu

2

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2013-12-29 19:39

Rejestracja: 8 lat temu

Ostatnio: 6 lat temu

0

@pingindykator: dzięki, pomogło.

Pozostało 580 znaków

Odpowiedz

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