I am trying to access an element using temp_param->mat_ptr[0][0]
but it produces an error Format specifies type 'int' but the argument has type 'int *'
. What is the problem?
#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;
}
CodePudding user response:
The type of expression params.mat_ptr
is a pointer to 2D array. Therefore is must be dereferenced before being accessed like 2D array.
Moreover temp_param
is a struct, not a pointer to struct. Therefore its members are accessed via .
operator rather than ->
.
Try (*temp_param.mat_ptr)[0][0]