创建指向结构内数组的指针

时间:2019-02-22 18:22:13

标签: c pointers struct

我想在每个对象中有一个带有多个3x3数组的结构,因此我想创建一个通用指针,以指向特定对象中这些数组中的任何一个。这是我所做的,但是始终告诉我指针类型不兼容。我应该如何修复array_ptr

typedef struct my_struct{

    char array[3][3];

} object;

object* init_obj(){

    object* platinum = (object*)malloc(sizeof(object));

    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            platinum->array[i][j] = 'w';
    return platinum;
}

int main(){

    object* platinum = init_obj();

    char **array_ptr = platinum->array;

    printf("%c\n", array_ptr[0][0]);

    return 0;
}

具体警告如下:

warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
  char **array_ptr = platinum->array;

当它运行时,它会隔离故障,但是如果我直接从platinum->array打印就不会。我该如何解决?

1 个答案:

答案 0 :(得分:2)

类型确实是不兼容的。分配时,数组{id:1,speed:20}, {id:2,speed:30}, {id,speed:40} 转换为指向其第一个元素的指针,其类型为platinum->array。但是您将其分配给char(*)[3]

您要

char**

相关:What is array decaying?