Witam, ucząc się z książki c++ szkoła programowania byłem jakiś czas temu (dokładnie wczoraj) na etapie wskaźników na stałe. Teraz dowiedziałem się jak przekazywać tablice dwu wymiarowe do funkcji. Dowiedziałem się że tablica2D jako parametr funkcji to tak naprawdę wskaźnik na tablice n-elementową (czyli coś takiego int (arr*)[n] albo inaczej int arr[][n] ) a więc wskaźnik na wskaźnik... Mamy zatem coś takiego:
void f(const int arr2D[][3]) { //to const
//cos tam w srodku
}
int main(){
int arr2D[3][3] = {
{1,1,1},
{1,1,1},
{1,1,1}
};
f(arr2D);
return 0;
}
Książka przestrzegała by nie dawać const w parametrze na tablicę dwu wymiarową bo jest ona wskaźnikiem na wskaźnik a nie wskaźnikiem na typ podstawowy. Wtedy to przynosi błędy:
const int a = 10;
int *pt1;
const int **pt2 = &pt1; //nie możliwe
*pt2 = &a;
*pt1 = 11; //bo jest to ryzykowne
Mimo wszystko moja funkcja f() z przekazaną tablicą nie-const nie powoduje żadnych błędów kompilacji... dlaczego?
Dziękuje za pomoc i pozdrawiam :)