M[i]
будет преобразовываться в обращение к адресу памяти M + i * sizeof(float)
, и по этому адресу будет читаться/записываться float.float** M;
idx = row * W + col
, где W - число столбцов в массиве, т.е. длина одной строки. А потом обращаешься к M[idx]. Тут обращение сложнее, но зато создавать/уничтожать массив проще, и он точно будет идти в памяти подряд. даже значения массив нет
Концепция направлена исключительно на простые запросы.