double *p, *q;
q=p+3;
Qual è il val di q? Perchè?
double *p, *q;
q=p+3;
Qual è il val di q? Perchè?
il valore di q dipende dalla variabile p
perchè
tu hai scritto
q=p+3;
ed hai assegnato al q un'operazione di somma tra una variabile e una costante (come ben sai le costanti nn cambiano mai ma le varibili si) perciò se io metto 3 come variabile il risultato è 6 se metto 1 il risultato è 4 e via dicendo capito???
Eccoti in C il piccolo programmino che te prima ha scrittocodice:#include <stdio.h> #include <stdlib.h> main() { int p; /* Dichiarazione della variabile*/ printf("Inserisci la variabile P =");/*Richiesta della variabile*/ scanf("%d",&p);/*Assegnazione della variabile*/ q = p + 3;/*Operazione da compiere*/ printf("Il Risultato e' = %d",q);/*Stampare q*/ system("PAUSE"); return 0; }
scusate... ma da dichiarazione:
p e q sono puntatori a double, quindi condouble *p, *q;
q diventa l'indirizzo puntato da p + 3 posizioni float...q=p+3;
q contiene un indirizzo!
Eccoti in C il piccolo programmino che te prima ha scrittocodice:#include <stdio.h> #include <stdlib.h> main() { int p; /* Dichiarazione della variabile*/ printf("Inserisci la variabile P =");/*Richiesta della variabile*/ scanf("%d",&p);/*Assegnazione della variabile*/ q = p + 3;/*Operazione da compiere*/ printf("Il Risultato e' = %d",q);/*Stampare q*/ system("PAUSE"); return 0; }
Guarda SuperSavio che stai facendo un po' di confusione.
Stai utilizzando per p e q (anche se manca il tipo per q) degli interi, mentre il problema indicava due PUNTATORI A DOUBLE.
Cosi' fai confondere POint87 ...
Come gia' detto, q e p sono dei puntatori a double.
q puntera' in memoria all'elemento 3 di un ipotetico vettore di double il cui elemento 0 e' puntato da p.
E' una domanda sull'aritmetica dei puntatori ...
Nota bene ... si deve presupporre che il puntatore p sia stato inizializzato prima di questa operazione, altrimenti il risultato non ha senso.
Mmm,intervengo io qui![]()
Se gli insegnamenti di Oregon erano esatti, si fa cosi.
codice:double *p = new double; double *q = new double prinf("Srivi il valore di P"); scand("%d",p); //No indirizzo perchè è un puntatore *q=*p+3; printf("Il valore di q = %d",q); //Stessa cosa delete p; delete q;
"Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)
"Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)
http://xvincentx.netsons.org/programBlog
Il codice di XWolverineX usa i puntatori (almeno) ma non e' corretto in piu' parti ...
Un semplice codice per capire puo' essere il seguente ...
codice:#include <stdio.h> int main() { double *p, *q; p = new double[5]; p[0] = 50.0; p[1] = 60.0; p[2] = 70.0; p[3] = 80.0; p[4] = 90.0; printf("Il puntatore %X punta a %f\n", &p[0], p[0]); printf("Il puntatore %X punta a %f\n", &p[1], p[1]); printf("Il puntatore %X punta a %f\n", &p[2], p[2]); printf("Il puntatore %X punta a %f\n", &p[3], p[3]); printf("Il puntatore %X punta a %f\n", &p[4], p[4]); printf("\n"); q = p+3; printf("Il puntatore p vale %X mentre q vale %X\n\n", p, q); printf("Il valore puntato da p e' %f\n", *p); printf("Il valore puntato da q e' %f\n", *q); printf("\n"); delete [] p; return 0; }
ok giusto.
E se :
int* a =0x00110022; a++;
Quanto vale a? Perchè?