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

问题描述:

我有以下结构:如何初始化指向结构的指针数组?

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;  
} 
+0

错误是哪一行?提供一个[最小自包含示例](https://*.com/help/mcve),所以我们可以重现该问题。 – Drop

+0

你可以通过指向某个东西来初始化一个指针。顺便说一句:你使用的是C++编译器吗? – wildplasser

+0

是的。我正在使用gcc。 – Manic

一件事,你需要为结构分配存储空间...现在你有一个单一的指针。就在你的循环的顶部,你应该这样做:

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

它已经有一段时间,因为我已经在“C”做结构,但你可以/或许应该typedef你的结构为好。

+2

其实,如果你使用calloc(而不是malloc),你的情况下所有这些初始化都是为你完成的。 – zzyzy