Era tardi...Originariamente inviato da Johnny_Depp
codice:int pun(int *a) { a++; // <-- guarda che 'A' è un puntatore return a; // <-- idem }![]()
![]()
![]()
Era tardi...Originariamente inviato da Johnny_Depp
codice:int pun(int *a) { a++; // <-- guarda che 'A' è un puntatore return a; // <-- idem }![]()
![]()
![]()
grazie![]()
![]()
![]()
![]()
20 minuti x farmi entrare in testa il fatto che c punta all' a di main e nn a quello di func
sono recuperabile?????????????????????????'
sono stupidoooooooooooooooooooooooooooooooooooooooooooo ooooooooooooo
:quote: :quote: :quote: quote:![]()
![]()
![]()
![]()
poi :
*p=&a
sempre cosi devo scrivere?
per dare ad un puntatore il valore dell'indirizzo di un'altra variabile?Originariamente inviato da kpietro86
poi :
*p=&a
sempre cosi devo scrivere?
si.
MySQL Worker - The OpenSource Multiplatform MySQL database Administrator (C++ powered)
.:[ It resumes the development !! ]:.
*p=a punto ad un intero (tipo link simbolico)
*p=&a punto all' indirizzo di memoria di a .............................
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
N.B. il tuo esempio:codice:#include <stdio.h> #include <stdlib.h> int main() { int *p, *q, i=5; q=(int*)malloc(sizeof(int)) ; /* 'p' punta all'indirizzo di memoria di 'i', quindi '*p' conterra il valore di 'i' (cioè 5) */ p=&i; /* visualizzo in entrambi i casi il valore di 'i' (5) */ printf("P:%d I:%d\n", *p, i); /* se assegno a '*p' un VALORE diverso da quello contenuto in 'i', anche il valore di 'i' cambia (ora 'i' ha come valore 2). */ *p=2; /* visualizzo in entrambi i casi il valore di 'i' (2) */ printf("P:%d I:%d\n", *p, i); /* ORA FAI ATTENZIONE!!! */ /* '*q' non punta all'indirizzo di memoria di 'i', ma al valore di 'i' (cioè a 2) e tu dirai: e allora!? cosa cambia? */ *q=i; /* visualizzo in entrambi i casi il valore di 'i' (2) (fin qua le cose non sembrano essere cambiate...) */ printf("Q:%d I:%d\n", *q, i); /* invece, sono cambiate. Se ora assegno a '*q' il valore 1, (cosa che ho fatto anche nel precedente esempio (con il puntatore '*p') */ *q=1; /* questa volta visualizzo due valori diversi, perchè in questo caso il valore di 'i' è rimasto invariato. (indovina perchè!?) */ printf("Q:%d I:%d\n", *q, i); system("PAUSE"); return 0; }
*p=&a // è errato!!! nel senso che non si pùo fare.
...dimenticavo: i puntatori, non si studiano in 20 minuti![]()
...Terrible warlords, good warlords, and an english song
condividoOriginariamente inviato da Johnny_Depp
...dimenticavo: i puntatori, non si studiano in 20 minuti![]()
MySQL Worker - The OpenSource Multiplatform MySQL database Administrator (C++ powered)
.:[ It resumes the development !! ]:.
finalmente ho capito ..........................................
veramente sta volta..........
cmq , nn ci ho messo 20 minuti a capirli ma in totale 2 settimane .
![]()
![]()
![]()
![]()
![]()
/* '*q' non punta all'indirizzo di memoria di 'i', ma al valore di 'i' (cioè a 2) e tu dirai: e allora!? cosa cambia? */
*q=i;
mi da core dumped il compilatore
se metto invece q=&i
no problem