Przy tym sposobie, czy przy sposobie z tablicą wskaźników zostanie zaalokowana pamięć na (m*n) zmiennych typu int, więc w tym względzie nie ma żadnej różnicy.
Czy tak jest prościej?
Zrób eksperyment, wypróbuj jeden i drugi sposób. Będziesz mógł stwierdzić, czy jest prościej czy nie.;)
Dla osoby średnio otrzaskanej we wskaźnikach, tablicach, zakładając, że stworzymy tablicę dwuwymiarową 4 x 5 i chcemy się odwołać do elementu w 3 wierszu i 4 kolumnie, moim zdaniem bardziej strawny będzie zapis:
//tworzenie tablicy 2-wym
int** matrix=(int**)malloc(4*sizeof(int*));
for (i=0;i<4;i++)
matrix[i]=(int*)malloc(5*sizeof(int)));
//odwolanie do elementu w 3 wierszu i 4 kolumnie
printf("%d",matrix[3][4]);
niż zapis:
int* matrix=(int*)malloc(20*sizeof(int));
printf("%d",matrix[19]); //4 wiersze (0,1,2,3) po 5 kolumn = 20
Zapis pierwszy jest bardziej naturalny w tym przypadku, drugi nie jest już tak intuicyjny, co wcale nie oznacza że nie jest poprawny.
Tak trzeba przy macierzach, czy to wymysł tylko?
Ten sposób działania nie ma specjalnego przeznaczenia, że tylko przy macierzach.