3

鉴于此结构:

typedef struct _WLAN_AVAILABLE_NETWORK_LIST {
    WLAN_AVAILABLE_NETWORK Network[1];
} *PWLAN_AVAILABLE_NETWORK_LIST;

声明WLAN_AVAILABLE_NETWORK Network[1]是什么意思?

4

2 回答 2

9

看起来很可能Network是为了充当一个灵活的数组成员。通过按字节过度分配结构sizeof(Network) * (n - 1),库和客户端代码可以访问结构的末尾,就好像数组成员是n长元素一样。

库代码:

PWLAN_AVAILABLE_NETWORK_LIST list = malloc(sizeof(_WLAN_AVAILABLE_NETWORK_LIST)
    + (sizeof(WLAN_AVAILABLE_NETWORK) * (n - 1)));
for (int i = 0; i < n; ++i) {
    list->Network[i] = ...;
}

客户端代码:

for (int i = 0; i < n; ++i) {
    do_something(list->Network[i]);
}
于 2012-08-13T15:14:41.023 回答
1

typedef struct _WLAN_AVAILABLE_NETWORK_LIST {声明一个名为_wlan...list

WLAN_AVAILABLE_NETWORK Network[1];假设在WLAN_AVAILABLE_NETWORK某处声明了一个被调用的结构。它是一个长度为 1(无意义)的数组,称为 Network。

} *PWLAN_AVAILABLE_NETWORK_LIST;立即创建此结构的(指针)变量,称为pwlan...list

于 2012-08-13T15:13:14.317 回答