gpt4 book ai didi

对 memset 感到困惑

转载 作者:太空宇宙 更新时间:2023-11-04 06:40:06 25 4
gpt4 key购买 nike

我正在学习套接字编程,我遇到了这段代码。

struct addrinfo hints, *res, *p;
int status;
char ipstr[INET6_ADDRSTRLEN];

if (argc != 2) {
fprintf(stderr,"usage: showip hostname\n");
return 1;
}

memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC; // AF_INET or AF_INET6 to force version
hints.ai_socktype = SOCK_STREAM;

if ((status = getaddrinfo(argv[1], NULL, &hints, &res)) != 0) {
fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(status));
return 2;
}

除了一个我都懂。为什么这段代码 memset 了结构提示而不是 *res 和 *p?

最佳答案

res 指针将由 getaddrinfo 填充函数,因此不需要用零初始化。另一方面,hints 需要初始化,因此将整个结构设置为零,然后设置仅有的两个需要设置的字段。

因为您没有在代码中使用 p - 我无法对此发表评论。

关于对 memset 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9820281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com