
programovani v C, ukazatele
Dobrý den,
proč mně prosím vás následující program vypíše vždy "ne"?
Podle mě by měl vypisovat naopak "ano".
Děkuji za pomoc.
#include <stdio.h>
#include <stdlib.h>
typedef struct data {
char* string;
int cislo;
} data;
void init(data *pom_1)
int main()
{
data *pom;
pom = (struct data *) malloc(sizeof(struct data));
init(pom);
if (pom == NULL)
printf("ano\n");
else
printf("ne\n");
return 0;
}
void init(data *pom_1)
{
pom_1 = NULL;
}
Vsetky parametre funkcii su predavane hodnotou na zasobniku, t.j. ten pointer sa skopiruje na zasobnik a teda nemenis original.
Ked chces nieco menit vo funkcii tak musis dat funkcii pointer na to co chces menit. Keby si chcel menit pointer tak by si musel dat fcii pointer na pointer.
ked predas fcii pointer na strukturu tak mozes menit hodnoty tej struktury, napr. pom_1->cislo = 1;
Nejsem si jistý jestli vám úplně rozumím. Mohl bych vás poprosit o upravení toho zdrojového kodu, pokud jde o malou úpravu?
ten zdrojovy kod nedava ziaden zmysel, inymi slovami je to totalna chujovina.
Ked silou mocou chces zmenit ten pointer tak
Nebo jednodušeji by fce init mohla vracet ukazatel.
Ano ved som pisal ze ten kod je nezmysel. Normalne bud fcia init alokuje a vrati ukazatel, alebo nealokuje a potom ale neptrebuje ani ukazatel menit.
Normalnejsie v OOP by bolo dat ten ukazatel ako membera triedy a mozu ho potom menit vsetky metody triedy.