试图 malloc 一个 typedef 二维数组

Trying to malloc a typedef 2d array

我已经声明了一个 typedef:

typedef float Matrix[3][3];

我现在正在尝试为该数组分配内存:

Matrix* matPtr = malloc(sizeof(Matrix));

if (matPtr != NULL)
{
    for (int r = 0; r < 3; r++)
    {
        for (int c = 0; c < 3; c++)
        {
            *matPtr[r][c] = 0; 
        }
    }
}

但我收到错误消息:

Severity Code Description Project File Line Suppression State Warning C6200 Index '2' is out of valid index range '0' to '0' for non-stack buffer 'matPtr'.

我做错了什么?

  1. 不要在 typedef 后面隐藏数组和指针。这是一个非常非常糟糕的做法。
  2. 使用指向数组的指针
int (*matrix)[3] = malloc(3 * sizeof(*matrix));

并用作普通矩阵

matrix[1][2] = 5;