0
struct ifaddrs {
struct ifaddrs *ifa_next;
char *ifa_name;
unsigned int ifa_flags;
struct sockaddr *ifa_addr;
struct sockaddr *ifa_netmask;
struct sockaddr *ifa_dstaddr;
void *ifa_data;
};
struct ifaddrs *addrs,*tmp;
if(getifaddrs(&addrs) != 0) {
perror("getifaddrs");
return 1;
}
for(tmp = addrs; tmp ; tmp = tmp->ifa_next) {
}
我已經看到的這段代碼在ifaddrs
中得到結果。但迭代for循環遍佈它可以找到的所有接口。迭代ifaddr的鏈表
for(tmp = addrs; tmp ; tmp = tmp->ifa_next) {
}
的問題是我不知道tmp->ifa_next
指針如何增加或去到下一個環節。
它不會遞增,它只是每次迭代時的另一個指針。嘗試添加'fprintf(stderr,「%p - >%p \ n」,tmp,tmp-> ifa_next);'在循環體內部,你會看到。 – wildplasser
由於'tmp = tmp-> ifa_next' –
順便說一句:沒有涉及到雙向鏈表。你對指針指針感到困惑嗎? – wildplasser