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),则案例中的所有初始化都将为您完成。