|
Titlul: pointeri Scris de: Cristi din Septembrie 22, 2009, 19:29:51 am o intrebare.....am inceput recent pointerii la sc.....profu ne-a explicat bine......da am cateva intrebari....
daca am char s[5]="info",*p; *p=s[0]// aici pointerul p retine adresa lui s[0] ? e bine? ma deruteaza nitzel ca am invatat ca daca pun * inaintea unei variabile care tine adresa unei valori atunci * returneaza valoarea acea.. si daca avem sa zicem p=&x atunci p=adresa valorii ; si este vreo diferenta aici: int *p; ...... .... ... p++; sau *p++; ?? Titlul: Răspuns: pointeri Scris de: Pripoae Teodor Anton din Septembrie 22, 2009, 19:59:36 Un pointer este o adresa catre o bucata din memorie. Sigur ca este diferenta intre p ++ si (* p) ++. Prima muta pointerul pe urmatoarea adresa de memorie, iar a doua creste cu 1 valoarea din acea adresa de memorie. Uite un exemplu :
Cod:
Spor :) Titlul: Răspuns: pointeri Scris de: Sima Cotizo din Septembrie 22, 2009, 22:31:14 daca am char s[5]="info",*p; *p=s[0]// aici pointerul p retine adresa lui s[0] ? e bine? Nu. aici atribui pe undeva in memorie (unde indica pointerul p) valoarea(caracterul) care se afla la s[0]. Uite, poate te lamuresti mai bine asa: Cod: Variabila | Adresa | Valoarea de la adresa respectiva Daca faci p+1 = 0x005, te duci la urmatoarea adresa de memorie. O poti accesa cu *(p+1) (sa vezi ce se afla acolo in memorie). Daca faci insa (*p)+1, e echivalent cu (x+1) (pentru ca la *p se afla valoarea lui x, la care.. adaugi 1). PS: valorile "adresa" le-am pus arbitrar si reprezinta numere in hex. PPS: daca vrei in exemplul cu *p si s[0] sa il pui pe p sa indice la inceputul lui s (adresa lui s[0]), faci direct p=s, care e echivalent cu p=&(s[0])). Titlul: Răspuns: pointeri Scris de: Cristi din Septembrie 23, 2009, 13:26:03 multumesc mult....pt ambele posturi...m-am lamurit \:D/
|