访问结构中包含指向矩阵数组的指针的元素

Accessing an element in struct holding a pointer to a matrix array

我正在尝试使用 temp_param->mat_ptr[0][0] 访问一个元素,但它产生了一个错误 Format specifies type 'int' but the argument has type 'int *'。有什么问题?

#include <stdio.h>

typedef int matrix[4][4];

matrix mat;

typedef struct tnode {
    matrix *mat_ptr;
} params;

params temp_param;

int main() {
    temp_param.mat_ptr = &mat;
    /* temp_param->mat_ptr[0][0] produces an error "Format specifies type 'int' but the argument has type 'int *'" */
    printf("%d", temp_param->mat_ptr[0][0]);

    return 0;
}

表达式params.mat_ptr的类型是一个指向二维数组的指针。因此必须在像二维数组一样访问之前取消引用。 此外 temp_param 是一个结构,而不是指向结构的指针。因此,它的成员是通过 . 运算符而不是 ->.

访问的

尝试(*temp_param.mat_ptr)[0][0]