prima di tutto, il C si studia sui manuali e non sui forum, xche è un ulinguaggio serio. l'operatore * (di dereferenziazione) applicato a un indirizzo di memoria ne restituisce il contenuto
il tuo codice è sbagliato:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int array[3]={5,14,20},i;
int *arrayPnt;
/*arrayPnt =array[0]; ERRORE!!
stai facendo puntare arrayPnt NON all'indirizzo di array ma alla cella di memoria corrispondente al contenuto della prima cella del tuo array. risultato: INCOERENZA dell'esecuzione*/
//quello che volevi fare è:
arrayPnt = array;
for(i=0; i<3; ++i){
printf("| %d |", array[ i ]);
}
/* queste stampe ti restituiranno solo valori numerici apparentemente sconclusionati, infatti stai chiedendo (con il %p) di stampare l'indirizzo a cui punta il tuo puntatore, e non il contenuto della cella di memoria puntata
printf("\n| %p |", arrayPnt);
printf("| %p |", arrayPnt+1);
printf("| %p |\n", arrayPnt+2);
un ciclo che stampa correttamente è:*/
for (i = 0; i < 3 i++)
printf("valore %d: %d", i, *(arrayPnt + 1) );// puoi anche fare un cast ma nn serve
return 0;
}
i puntatorei sono la cosa migliore del C, ma anche la cosa più complessa! studia su un manuale!
ciao!
Ultima modifica effettuata da eddiewrc il 29/11/2009 alle 20:03 |