繁体   English   中英

在struct中创建指向数组的指针

[英]Create pointer to array within 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打印,则不会出现故障。 我该如何解决?

事实上,这些类型确实是不相容的。 数组platinum->array在分配时转换为指向其第一个元素的指针,其类型为char(*)[3] 但是你将它分配给char**

你要:

char (*array_ptr)[3] = platinum->array;

相关: 什么是阵列衰减?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM