wskazniki i adresy w pamieci

0

Witam:)
Mam taki problem że chce najzwyczajniej w świecie chcę zmienić w funkcji wartość elementu tablicy znajdującej się w strukturze której wskaznik został do tej funkcji przekazany. Zamiast rządanej wartosci wyskakują krzaki, czyli cos nie tak z adresami ale nie moge dojsc co... domyslam sie ze porpostu nie rozumiem do konca idei wskazników:)

typedef struct Odwrotna_notacja_poska{
    char tab[100];
} ONP;

ONP* onpCreate(char *naz){
    ONP* onp;
    strcpy(onp->tab,naz);
    return onp;
}

void setParam(ONP* struktura,char znak,int wartosc){ 
    printf("%c",struktura->tab[0]);
    printf("%i",wartosc);
    struktura->tab[0]=wartosc; // tu tworzy sie caly blad 
    printf("%c",struktura->tab[0]);// w tym miejscu zaczynaja sie pojawiac krzaki
}

int main()
{
    ONP* onp = onpCreate("a + b 7 *");
    setParam(onp,"a",2);
    printf("%s",onp->tab);
    return 0;
}
0
    ONP* onp; // wskazuje na jakiś adres w pamięci pseudolosowy
    strcpy(onp->tab,naz); // kopiujesz coś pod ten pseudolosowy adres

Dalej można nie rozpatrywać błąd pojawi się wcześniej lub później.

0

to wychodzi na to że powinienem zarezerwować pamięć za pomocą malloc? ale jak to robię nadal wyskakują krzaki...

0

Wcale się nie dziwię e wyskakują krzaki.
Ba nawet wiesz która komenda to powoduje.
Problem w tym że z tego kodu nie wynika czego się spodziewasz, dla tego zadałem ci pytanie:

struktura->tab[0]=wartosc; - co wg ciebie ma się stać w wyniku tego polecenia?

0

aa nie spojrzałem że pod postem jest pytanie:) także to polecenie ma przypisywać wartości, chce by w tab[0] zanazła się 2 która jest podana do funkcji przez wartość.

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