struct ifaddrs **ifap;
struct ifaddrs *ifa;
int n;
n = getifaddrs(&ifa);
*ifap = ifa;
for (ifa; ifa!= NULL; ifa = ifa->ifa_next)
{
对地址链表的处理函数
}
调用双重指针ifap,指向ifa;单重指针ifa,指向地址链表。
在for循环中使用ifa进行遍历,遍历结束后,ifa指向null。但是ifap仍然指向地址链表头结点。
因为在语句
*ifap = ifa;
之后,*ifap并不是一个地址,而是一个变量。*ifap作为变量,存储着ifa当时的地址的值(如0x05f0)。之后ifa进行遍历时,*ifap作为一个变量,不发生变化。