Я смотрю на функцию, которая создает единичную матрицу, но я не совсем понимаю, какой синтаксис используется.
/* make an identity matrix of ints */
real **id_mat(int dim) {
int row, col;
real **mat;
mat = (real **) alloc2d(dim, dim, sizeof(real));
if(mat == NULL)
return (mat);
for(row = 0; row < dim; row++)
for(col = 0; col < dim; col++)
mat[row][col] = (row == col ? 1.0 : 0.0); /* here */
return (mat);
}
Я запутался, почему mat
не разыменовывается для назначения значений строки / столбца. mat
хранит адрес указателя, который, как я полагаю, преследует цель сохранить значение, измененное за пределами функции, так как же построить массив из адреса? Разве это не должно быть **mat[row][col] = (row == col ? 1.0 : 0.0);
? Если нет, то почему это не работает?