下面是我正在查看的代码:
void add_to_pfds(struct pollfd *pfds[], int newfd, int *fd_count,
int *fd_size)
{
// If we don't have room, add more space in the pfds array
if (*fd_count == *fd_size) {
*fd_size *= 2; // Double it
*pfds = realloc(*pfds, sizeof(**pfds) * (*fd_size));
}
(*pfds)[*fd_count].fd = newfd;
(*pfds)[*fd_count].events = POLLIN; // Check ready-to-read
(*fd_count)++;
}
如果这看起来很熟悉,那是因为它来自Beej的网络编程指南.
我不明白的是(*pfds)[*fd_count].fd = newfd;
.pfds
是一个struct pollfd指针array.在我的理解中,(*pfds)
首先取消引用数组,导致一个structpollfd指针,数组的第一个元素.然后我们索引到数组中,索引为*fd_count
.这不应该导致另一个pollfd指针吗?那么,我们如何使用period操作符访问该 struct 的.fd
成员呢?我们是不是应该用—操作符来代替?>
我在某个地方漏掉了什么.有人能给我一个正确的思考方法吗?