Witam, mam taki kod do dynamicznego alokowania tablicy dwuwymiarowej:
char **tab;
char k = 12;
tab = malloc(3 * sizeof(int *));
for (int i = 0; i < 3; i++) {
*(tab + i) = malloc(4 * sizeof (int));
for (int j = 0; j < 4; j++) {
*(*(tab + i) + j) = k--;
}
}
Działa poprawnie, lecz trapi mnie pytanie dlaczego taki przykład też działa?
char **tab;
char k = 12;
// zamiast int * zwykły int
tab = malloc(3 * sizeof(int));
for (int i = 0; i < 3; i++) {
*(tab + i) = malloc(4 * sizeof (int));
for (int j = 0; j < 4; j++) {
*(*(tab + i) + j) = k--;
}
}
Skoro "pierwszy poziom" tablicy (wskaźnika) zawiera wskaźnik na drugi poziom to wg mnie powinno być int *. Tymczasem działają obydwa przykłady. Może ktoś sprostować?