Post
by Andreas » 26 Jan 2011, 13:58
dupa cum ar canta Lenon, varianta nerd: "Imagine all the bytes!"
conceptual un tablou 2d este o structura complet diferita de 1d, chiar daca este compusa din aceleasi parti informationale, adica bytes; insa fara notiunile de rand si coloana ea nu mai exista ca si concept, sau se reduce definitiv la un tablou 1d...
ce este frumos, si posibil, este faptul ca poti sa imaginezi "transportul" de date(transmiterea la functia apelata) a informatiei din tablou ca un singur sir de bytes; prin referinta nu ai nevoie decat de inceputul sirului, adresa de start; prin valoare poti sa il transporti ca un tablou 1d...
problema este la reconstructia din "1d" in 2d, unde ai nevoie de informatiile despre rand si coloana...
de aceea Marius ti-a propus o varianta in acest sens...
daca vrei sa transmiti totul intr-un tablou 1d, este necesar sa impachetezi informatia despre randuri si coloane, in acelasi sir de bytes, sa zicem la inceputul sirului, dupa care sa urmeze informatia "utila" din tablou; ceva asemanator cu formatul unui bmp...
oricum, exemplul tau de a construi un tablou 2d cu pointer dublu e putin aiuritor si trebuie evitat la inceput, fiind dificil de interpretat/imaginat (chiar daca are avantajul optimizarii folosirii memoriei), ca dovada fiind faptul ca spui ca functia afis2(&(*bmp1)) afiseaza corect chiar apelata pentru fiecare element din tablou(ma indoiesc!); un tablou 2d "static" permite macar vizualizare lui ca un sir continuu de adrese, organizate in randuri si coloane....