chyba dalej tego nie rozumiem, jeśli tab jest wskaźnikiem na tablice tab = &tablica to na początek adres tego wskaźnika powinien być równy komórce pamięci w której znajduje się początek tablicy czyli element tablica[0], a w ten sposób *tab zostaje pokazana wartość, która znajduje się w tej komórce pamięci.
int tablica[10] = {1,2,3,4,5,6,7,8,9,10};
int (*tab)[10];
tab = &tablica;
cout << "tab: " << tab << endl;
cout << "*tab: " << *tab << endl;
cout << "&tablica: " << &tablica << endl;
cout << "tablica: " << tablica << endl;
int* wsk = &tablica[0];
cout << "wsk: " << wsk << endl;
Adres tablicy jest równy adresowi pierwszego elementu, ale to nie znaczy że wsio jedno co się kryje pod tym. Typ ma znaczenie.
cout << *tab;
Mówisz kompilatorowi "wypisz mi obiekt, na który wskazuje tab
". Kompilator mówi "spoko loko, pod tym adresem jest obiekt typu tablica to sobie tę tablicę wypisuję". W tym momencie kompilator zamieni tablica
na wskaźnik do pierwszego elementu i wypisze ten adres.
cout << *wsk;
Mówisz "wypisz mi obiekt, na który wskazuje wsk
". Kompilator "spoko, ten wskaźnik wskazuje na jakąś liczbę typu int
no to sobie tę liczbę wypisuję".