View Full Version : [C] Errore a run-time con i puntatori.
supalova10
27-01-2010, 13:30
Salve ho un problema con i puntatori e volevo sapere se è un problema noto di windows o c'è qualche errore di compilazione.
Allora se scrivo un programmino nel seguente modo da problemi, cioe spunta la solita segnalazione errore di windows etc etc:
int *pi;
int a=9;
*pi=a;
printf("%d\n", *pi);
invece nel seguente modo (meno intuitivo pero) non ho problemi:
int *pi;
int a=9;
pi=&a;
printf("%d\n", *pi);
Grazie per le risposte.
veramente funziona in entrambi i casi.
Nel primo caso copi il contenuto della variabile a nella cella puntata da pi
Nel secondo caso realizzi un puntamento da parte del puntatore pi verso l'indirizzo di memoria della variabile a
supalova10
27-01-2010, 15:37
veramente funziona in entrambi i casi.
Nel primo caso copi il contenuto della variabile a nella cella puntata da pi
Nel secondo caso realizzi un puntamento da parte del puntatore pi verso l'indirizzo di memoria della variabile a
si ma nel caso in cui non uso l'& quando faccio run mi da errore di windows... l'applicazione sara chiusa etc etc.... non so a cosa è dovuto.
veramente funziona in entrambi i casi.
Nel primo caso copi il contenuto della variabile a nella cella puntata da pi
Nel secondo caso realizzi un puntamento da parte del puntatore pi verso l'indirizzo di memoria della variabile a
Errato.
nel primo caso copi il contenuto di a (a essendo una variabile 'scalare', non un array insomma, copi il contenuto senza l'& davanti, nel caso fosse stato un array sarebbe stato ininfluente) nella variabile puntata da pi, quindi *pi, ma nel secondo caso qual'è *pi? Dove imposti l'indirizzo che deve puntare pi? Da nessuna parte, o meglio in una locazione random che ha il puntatore a default, che, essendo casuale può funzionare (come a te Rsk) o meno, ma è puro c**o!
supalova: l'unico modo, è appunto il secondo tuttavia anche questo modo sarebbe corretto:
int *pi;
int b, a=9;
pi=&b;
*pi=a;
printf("%d\n", *pi);
supalova10
27-01-2010, 16:08
Errato.
nel primo caso copi il contenuto di a (a essendo una variabile 'scalare', non un array insomma, copi il contenuto senza l'& davanti, nel caso fosse stato un array sarebbe stato ininfluente) nella variabile puntata da pi, quindi *pi, ma nel secondo caso qual'è *pi? Dove imposti l'indirizzo che deve puntare pi? Da nessuna parte, o meglio in una locazione random che ha il puntatore a default, che, essendo casuale può funzionare (come a te Rsk) o meno, ma è puro c**o!
supalova: l'unico modo, è appunto il secondo tuttavia anche questo modo sarebbe corretto:
int *pi;
int b, a=9;
pi=&b;
*pi=a;
printf("%d\n", *pi);
ho capito, grazie mille... quindi in pratica a run time il programma crasha perche manca l'inizializzazione del puntatore pi, esatto?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.