Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何初始化指向结构的指针数组?_C - Fatal编程技术网

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

C 如何初始化指向结构的指针数组?,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 
{
    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];
如何初始化AllClient的所有数组元素以使其具有默认值

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

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;    
}
for(inti=0;isocket=0;
所有客户端[i]->port=NULL;
所有客户端[i]->IP=NULL;
所有客户端[i]->hostName=NULL;
所有客户端[i]->msgSentCount=0;
所有客户端[i]->msgRecvCount=0;
所有客户机[i]->状态=空;
所有客户端[i]->bufferMsg=“”;
所有客户端[i]->blockedUser={“”、“”、“”、“”};
AllClient[i]->blockedCount=0;
}

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

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

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

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

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

我已经有一段时间没有在“C”中使用结构了,但是你也可以/应该
typedef
你的结构。

错误在哪一行?提供一个,这样我们就可以重现问题。你可以通过使指针指向某个东西来初始化指针。顺便说一句:你使用的是C++编译器吗?是的。我使用的是gcc。这是:'allClients[I]->blockedUser={“”,“”,“”,“”,“};”正在使用四个空字符串而不是四个字符进行初始化。错误发生在哪一行?请提供一个,这样我们就可以重现问题。您可以通过使指针指向某个对象来初始化指针。顺便说一句:您使用的是C++编译器吗?是的。我使用的是gcc。这是:'AllClient[I]>blockedUser={“”,“”,};'使用四个空字符串而不是四个字符进行初始化。实际上,如果您使用calloc(而不是malloc),则案例中的所有初始化都将为您完成。实际上,如果您使用calloc(而不是malloc),则案例中的所有初始化都将为您完成。