如何初始化指向结构的指针数组?
问题描述:
我有以下结构:如何初始化指向结构的指针数组?
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
你的结构为好。
+2
其实,如果你使用calloc(而不是malloc),你的情况下所有这些初始化都是为你完成的。 – zzyzy
错误是哪一行?提供一个[最小自包含示例](https://stackoverflow.com/help/mcve),所以我们可以重现该问题。 – Drop
你可以通过指向某个东西来初始化一个指针。顺便说一句:你使用的是C++编译器吗? – wildplasser
是的。我正在使用gcc。 – Manic