Witam, mam konkretne pytanie odnośnie łączenia const np. w takich wyrażeniach:
const int * b;
int * const b;
Pierwszy to wskaźnik na stałe inty, natomiast drugi to stały wskaźnik na inty. W pierwszym przypadku nie mogę zmieniać wartości inta, który jest trzymany przez wskaźnik, natomiast w drugim przypadku nie mogę zmieniać adresu wskaźnika (&b) natomiast mogę manipulować wartością mu przypisywaną. Ja tak to rozumiem, więc teraz, zgodnie z poleceniem - sprawdź czy kod kompilacja i uruchomienie powiodą się.
int const A[4] = {1,2,3,4};
int * const g = A;
cout << g[2] << endl;
powyższy kawałek kodu według mnie powinien się wykonać, a w rzeczywistości według wskazówek wykładowcy tak nie jest. Nie zmieniam tutaj przeciez adresu wskaźnika, tylko próbuję pokazać element o indeksie 2 z tablicy A, co tutaj wpływa na błąd?
int A[3];
int * const g = A;
g[1] = 3;
cout << A[1] << endl;
tego nie potrafię przeanalizować, mam tutaj stały wskaźnik g, ustawiony na element o zerowym indeksie w tablicy A, ale jak uzasadnić gdzie leży błąd?
Dzięki z góry za pomoc i proszę o konkretne wyjaśnienia co robię źle.