c - 如何初始化指向结构的指针数组?

标签 c

我有以下结构:

struct clientDetails 
{
    int socket;  
    char* port;
    char* IP;
    char* hostName;
    int msgSentCount;
    int msgRecvCount;
    char* status;
    char bufferMsg[BUFFER_SIZE];
    char blockedUser[4];
    int blockedCount;   
};

我有一个指针数组:

struct clientDetails* allClients[4];

如何将 allClients 的所有数组元素初始化为默认值?

我尝试了以下方法,但我得到的是“结构类型的不完整定义”:

for(int i = 0; i<4; i++) {
        allClients[i]->socket = 0;  
        allClients[i]->port = NULL;
        allClients[i]->IP = NULL;
        allClients[i]->hostName = NULL;
        allCLients[i]->msgSentCount = 0;
        allClients[i]->msgRecvCount = 0;    
        allClients[i]->status = NULL;
        allClients[i]->bufferMsg = "";
        allClients[i]->blockedUser = {"","","",""};
        allClients[i]->blockedCount = 0;    
}

最佳答案

一方面,您需要为该结构分配存储...现在您只有一个指针。在循环的顶部,您应该执行以下操作:

allClients[i] = malloc(sizeof(clientDetails));

自从我在“C”中完成结构已经有一段时间了,但是您也可以/应该typedef您的结构。

关于c - 如何初始化指向结构的指针数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46622302/

相关文章:

c - 如何用 C 语言计算计算机的字长?

c - Quicksort 取决于选择 Pivot

c++ - 锁定文件并避免同一进程访问它两次

c - C程序预处理后生成哪个文件?

c++ - 缓存 C/C++ 程序中的值的命中/未命中

c - fprintf的返回值

c - 为什么栈实现为链表?有什么需要,为什么数组实现不够?

c - 像 Process Hacker 一样卸载 dll

c - 为什么在下面的程序中需要cast?

c - c程序的简单Makefile