鑑於這種結構:結構聲明WLAN_AVAILABLE_NETWORK網絡[1];
typedef struct _WLAN_AVAILABLE_NETWORK_LIST {
WLAN_AVAILABLE_NETWORK Network[1];
} *PWLAN_AVAILABLE_NETWORK_LIST;
是什麼聲明WLAN_AVAILABLE_NETWORK Network[1]
是什麼意思?
鑑於這種結構:結構聲明WLAN_AVAILABLE_NETWORK網絡[1];
typedef struct _WLAN_AVAILABLE_NETWORK_LIST {
WLAN_AVAILABLE_NETWORK Network[1];
} *PWLAN_AVAILABLE_NETWORK_LIST;
是什麼聲明WLAN_AVAILABLE_NETWORK Network[1]
是什麼意思?
它看起來可能Network
旨在作爲flexible array member。通過以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]);
}
typedef struct _WLAN_AVAILABLE_NETWORK_LIST {
聲明一個結構名爲_wlan...list
WLAN_AVAILABLE_NETWORK Network[1];
假設一個結構稱爲WLAN_AVAILABLE_NETWORK
某處聲明。它是長度爲1(無意義)的數組,稱爲網絡。
} *PWLAN_AVAILABLE_NETWORK_LIST;
立即創建此結構的(指針)變量,名爲pwlan...list
是的,可能是指針變量可以通過分配指向某些變量內存,並通過使用該數組變量,我們可以相應地使用..謝謝 – david 2012-08-24 10:55:10
這將是有益的,看看有什麼'WLAN_AVAILABLE_NETWORK'不過是我的第一個猜它是模仿不氾濫代碼通過引用以'& ',與'gmp'類似。 – pmr 2012-08-13 15:11:21
@pmr,http://msdn.microsoft.com/en-us/library/windows/desktop/ms707403(v=vs.85).aspx – chris 2012-08-13 15:12:16