简体   繁体   English

我如何在指针数组中分配指针值

[英]How do i assign pointer value inside array of pointers

i have this error:我有这个错误:

ID3.c:71:53: error: incompatible types when assigning to type 't_object' {aka 'struct object'} from type 't_object *' {aka 'struct object *'} 71 | ID3.c:71:53:错误:从类型“t_object *”{又名“结构 object *”} 分配给类型“t_object”{又名“结构对象”}时类型不兼容 *'} 71 | (objects->v[sizeof(void *) * i]) = t_object_ctor(); (objects->v[sizeof(void *) * i]) = t_object_ctor(); | | ^~~~~~~~~~~~~ ^~~~~~~~~~~~~

i tried this:我试过这个:

&(objects->v[sizeof(void *) * i]) = t_object_ctor(); &(objects->v[sizeof(void *) * i]) = t_object_ctor();

and tried this并尝试了这个

*(objects->v[sizeof(void *) * i]) = t_object_ctor(); *(objects->v[sizeof(void *) * i]) = t_object_ctor();

and this gives the same error这给出了同样的错误

*((objects->v)+[sizeof(void *) * i]) = t_object_ctor(); *((objects->v)+[sizeof(void *) * i]) = t_object_ctor();

this is the funcion the error is in: t_objects *t_objects_ctor(){ t_objects *objects =malloc(sizeof(t_objects));这是错误所在的函数: t_objects *t_objects_ctor(){ t_objects *objects =malloc(sizeof(t_objects));

    objects->size = 0;
    objects->y = 0;
    objects->x = 0;
    objects->x_size= malloc(sizeof(size_t) * RESONABLENUMBER);
    objects->v= malloc(sizeof(void *) * RESONABLENUMBER);
    for (int i = 0; i < RESONABLENUMBER; ++i) {
        *((objects->v) + sizeof(void *) * i) = t_object_ctor();
    }
    objects->b_size = 0;
    objects->b = NULL;
    
    return objects;
}

this is the function im assigning pointers from:这是 function 即时分配指针来自:

t_object *t_object_ctor(){
    t_object *object =malloc(sizeof(t_object));
    
    object->s = 0;
    object->x = NULL;
    object->y = 0;
    
    return object;
    
}
Try this:尝试这个:
((t_object **)objects->v)[i] = t_object_ctor();
Full code like this:完整代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define RESONABLENUMBER 16
typedef struct t_objects {
    int size;
    int x, y;
    void *x_size;
    void *v;
    int b_size;
    char *b;
} t_objects;

typedef struct t_object {
    int s;
    void *x;
    int y;
} t_object;

t_object *t_object_ctor()
{
    t_object *object = malloc(sizeof(t_object));

    object->s = 0;
    object->x = NULL;
    object->y = 0;

    return object;
}

t_objects *t_objects_ctor()
{
    t_objects *objects = malloc(sizeof(t_objects));

    objects->size = 0;
    objects->y = 0;
    objects->x = 0;
    objects->x_size = malloc(sizeof(size_t) * RESONABLENUMBER);
    objects->v = malloc(sizeof(void *) * RESONABLENUMBER);
    for (int i = 0; i < RESONABLENUMBER; ++i) {
        ((t_object **)objects->v)[i] = t_object_ctor();
    }
    objects->b_size = 0;
    objects->b = NULL;

    return objects;
}

int main()
{
    t_objects_ctor();
    return 0;
}

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

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