|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Aug 2012
Messaggi: 268
|
[C]puntatoreApuntatore e arraydiPuntatori , problema
ciao mi è venuto un dubbio veniale sui puntatori :
un array di puntatori dovrebbe essere equivalente a un puntatore a puntatore , eccetto che quest'ultimo è read only : ho provato ad accedere al loro contenuto , ma se nei primi due casi tutto funziona nel terzo esempio ottengo sempre core dump : qualcuno mi può aiutare ? non vorrei dire sciocchezze ,ma ho il sospetto che che compile-time e run-time centrino qualcosa.. SI Codice:
main(int argc , char **argv) { ... printf ("%s" , argv[1]) ; } Codice:
main(int argc , char *[]argv) { ... printf ("%s" , argv[1]) ; } Codice:
int main() { char **str="pippo"; printf ("%s" , str[1]) ;//coredump printf ("%s" , *str) ;//core dump } |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Aug 2012
Messaggi: 268
|
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
|
![]() |
![]() |
![]() |
#4 | |
Member
Iscritto dal: Aug 2012
Messaggi: 268
|
Quote:
|
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
Cosa non capisci in particolare ?
Conosci la differenza tra un puntatore semplice e un puntatore a puntatore? |
![]() |
![]() |
![]() |
#6 | |
Member
Iscritto dal: Aug 2012
Messaggi: 268
|
Quote:
se Codice:
char *str="ciao" perchè Codice:
char **str2="ciao" |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
Un doppio puntatore è un puntatore che punta ad un puntatore che punta al dato. Quindi
**dstr -> *str -> "pippo" Ma *str deve esistere, non puoi solamente immaginarlo. Quindi è corretto scrivere così char *str = "ciao"; char **dstr = &str; |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:29.