Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Beeeeeello! L'unica cosa che mi fa girare un po' le pelotas, è che stamattina son rimasto sveglio fino alle 6 e mi son perso comunque la possibilità di fare il primo post in questo forum .
int *p=a;
è effettivamente la dichiarazione di un puntatore ad intero che viene inizializzato con l'indirizzo di a.
a in questo caso è un array e pertanto un "puntatore alla prima locazione" dell'array... diciamo che punta al primo indirizzo della memoria allocata per l'array.
p=&a[0];
è effettivamente l'equivalente di p=a;
Poichè l'operatore [] estrae il valore della locazione richiesta (detto proprio brutto) in pratica a[n] è uguale ad *(a+n) pertanto scrivere &a[0] produce gli stessi risultati di &*(a+0) ovvero (a+0) ovvero a
p=&a;
se a fosse una variabile allora necessariamente dovremmo estrapolarne l'indirizzo per assegnarlo ad un puntatore... pertanto la cosa andrebbe nel modo in cui hai scritto
per puro scrupolo aggiungo che la seguente scrittura funziona se la intendi come int *p=a;
se per caso scrivi una cosa simile:
int *p;
*p=a;
Hai il 70%(percentuale inventata ) delle possibilità di fare amicizia con la segmentation fault.
Se poi sei bravo e scrivi int *p=NULL; allora hai il 100%(percentuale vera ) delle possibilità di far esplodere il programma.