试图 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'.
我做错了什么?
- 不要在 typedef 后面隐藏数组和指针。这是一个非常非常糟糕的做法。
- 使用指向数组的指针
int (*matrix)[3] = malloc(3 * sizeof(*matrix));
并用作普通矩阵
matrix[1][2] = 5;
我已经声明了一个 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'.
我做错了什么?
- 不要在 typedef 后面隐藏数组和指针。这是一个非常非常糟糕的做法。
- 使用指向数组的指针
int (*matrix)[3] = malloc(3 * sizeof(*matrix));
并用作普通矩阵
matrix[1][2] = 5;