• Как передать статический двумерный массив типа float в функцию типа void в качестве аргумента на языке C?

    @res2001
    Developer, ex-admin
    1. В двумерных массивах в Си данные располагаются в памяти по строчно, т.е. сначала идет первая строка массива, затем вторая и т.д. У вас же индекс по строкам указан вторым. Вас тут спасает только то, что матрица квадратная и количество строк равно количеству столбцов.
    2. Внутри функции переданный массив - это не массив, это указатель float *nameMatrix. Соответственно вы не можете делать двойную индексацию nameMatrix[x][y]. Вам надо вычислять индекс вручную:
    *(nameMatrix + y * columnsMatrix + x) = a * (x + 1) * powf(sinf(y + b), 2);

    Для справки, индексация массива это синтаксический сахар для следующей операции: *(nameMatrix + i)
    Ответ написан
    Комментировать