我正在尝试在C中创建结构数组,我想对其进行初始化。
但是我收到此错误,而且我不知道如何解决。

int main(int argc, char **argv){

    struct argnum{
        int rank;
        char fileNamne[10];
    };

    void** argtab= malloc(sizeof(struct argnum)*(argc-1));

    for(int i=0; i<argc-1; i++){
        argtab[i]->rank=i;
        argtab[i]->filename=argv[i];
    }
}



Exercise2.c: In function ‘main’:
Exercise2.c:22:18: error: request for member ‘rank’ in something not a structure or union
     argtab[i]->rank=i;
              ^
Exercise2.c:23:18: error: request for member ‘filename’ in something not a structure or union
     argtab[i]->filename=argv[i];
              ^

最佳答案

如果argtab的类型为void **,则argtab[i]的类型为void *,这不是指向结构或联合类型的指针。

请注意,将argtab的类型从void **更改为struct argnum**是不够的,因为除了分配argtab[i]之外,您还必须分配每个argtab

您最好将argtab分配为

struct argnum *argtab = malloc( sizeof *argtab * (argc - 1));


然后使用.而不是->访问每个成员:

argtab[i].rank = i;


因为每个argtab[i]的类型都是struct argnum,而不是struct argnum *

关于c - 如何解决“在非结构或 union 的情况下要求成员'等级'的问题”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58050603/

10-11 15:45