PDA

View Full Version : [C]puntatori...


MEMon
15-03-2007, 14:55
Ma non si può fare *p++ per incrementare il valore puntato dal puntatore?
Ho dovuto fare *p+=1 altrimenti dava valori "non plausibili", è normale?

andbin
15-03-2007, 15:01
Ma non si può fare *p++ per incrementare il valore puntato dal puntatore?
Ho dovuto fare *p+=1 altrimenti dava valori "non plausibili", è normale?(*p)++

*p++ prende il contenuto puntato da p e poi incrementa p.

MEMon
15-03-2007, 15:02
Ah quindi io stavo incrementando il puntatore e non il valore puntato giusto?

andbin
15-03-2007, 15:03
Ah quindi io stavo incrementando il puntatore e non il valore puntato giusto?Esatto.

MEMon
16-03-2007, 11:36
ma cosa c'è di sbagliato in questo codice

int *pi;
*pi=10;
printf("%d", *pi);


Mi da un errore del tpo:Error while dumping state. Segmentation fault

andbin
16-03-2007, 11:40
int *pi;
*pi=10;
printf("%d", *pi);'pi' è un puntatore ma .... a cosa punta??? Infatti non è inizializzato.

MEMon
16-03-2007, 11:41
bhe immagino che punti ad uno spazio di memoria in grado di contenere un int, o no?
come va inizializzato?

andbin
16-03-2007, 11:53
bhe immagino che punti ad uno spazio di memoria in grado di contenere un int, o no?
come va inizializzato?Una variabile "automatica" (di qualunque tipo) se non inizializzata contiene "immondizia" ...

Esempio:
int a;
int *pi = &a;
*pi=10;
printf("%d", *pi);

RaouL_BennetH
16-03-2007, 14:55
Una variabile "automatica" (di qualunque tipo) se non inizializzata contiene "immondizia" ...



Per immondizia intendi che in pratica non si sa assolutamente cosa si sta puntando?

Grazie.

RaouL.

andbin
16-03-2007, 15:01
Per immondizia intendi che in pratica non si sa assolutamente cosa si sta puntando?Non si sa cosa contiene la variabile. È allocata sullo stack ma se non viene inizializzata, il contenuto dipende da cosa c'è/c'era sullo stack.