|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jun 2006
Messaggi: 1539
|
[C] Errore a run-time con i puntatori.
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.
__________________
Main: i7-13700K / ASUS TUF Gaming GeForce RTX 4090 / Corsair 5000D / Corsair HX1200 / Samsung 980 Pro 2TB / Corsair H150i / Corsair Vengeance 32 GB DDR5 / ASUS PRIME Z790-P / ASUS 27" OLED - PG27AQDM / Corsair K60 / Logitech Marathon M705 / HyperX Cloud Alpha Secondary: i9-9900KF / Zotac Gaming RTX 2080 Ti AMP! / Fractal Define R6 Black / Corsair RM850x / Samsung 970 EVO 1TB / ASUS ROG Strix Z390-F Gaming / be quiet! Puro Rock / Corsair Vengeance LPX 32 GB DDR4 |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 314
|
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
__________________
Athlon64 x2 5600 - AsRock ALiveNF5eSata2+ - kingston 2GB ddr2 800 - GeForce 8800gts 320MB |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jun 2006
Messaggi: 1539
|
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.
__________________
Main: i7-13700K / ASUS TUF Gaming GeForce RTX 4090 / Corsair 5000D / Corsair HX1200 / Samsung 980 Pro 2TB / Corsair H150i / Corsair Vengeance 32 GB DDR5 / ASUS PRIME Z790-P / ASUS 27" OLED - PG27AQDM / Corsair K60 / Logitech Marathon M705 / HyperX Cloud Alpha Secondary: i9-9900KF / Zotac Gaming RTX 2080 Ti AMP! / Fractal Define R6 Black / Corsair RM850x / Samsung 970 EVO 1TB / ASUS ROG Strix Z390-F Gaming / be quiet! Puro Rock / Corsair Vengeance LPX 32 GB DDR4 |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Feb 2001
Città: Foggia
Messaggi: 2519
|
Quote:
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: Codice:
int *pi; int b, a=9; pi=&b; *pi=a; printf("%d\n", *pi);
__________________
mi sembra di essere tornato adolescente ai bei tempi.. che figata essere di nuovo su questo forum ![]() |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jun 2006
Messaggi: 1539
|
Quote:
__________________
Main: i7-13700K / ASUS TUF Gaming GeForce RTX 4090 / Corsair 5000D / Corsair HX1200 / Samsung 980 Pro 2TB / Corsair H150i / Corsair Vengeance 32 GB DDR5 / ASUS PRIME Z790-P / ASUS 27" OLED - PG27AQDM / Corsair K60 / Logitech Marathon M705 / HyperX Cloud Alpha Secondary: i9-9900KF / Zotac Gaming RTX 2080 Ti AMP! / Fractal Define R6 Black / Corsair RM850x / Samsung 970 EVO 1TB / ASUS ROG Strix Z390-F Gaming / be quiet! Puro Rock / Corsair Vengeance LPX 32 GB DDR4 |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Feb 2001
Città: Foggia
Messaggi: 2519
|
si si
__________________
mi sembra di essere tornato adolescente ai bei tempi.. che figata essere di nuovo su questo forum ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:09.