gpt4 book ai didi

c - 为什么 h_addr_list(在 hostent 结构中)的类型为 char** 而不是 void*?

转载 作者:太空宇宙 更新时间:2023-11-03 23:31:51 25 4
gpt4 key购买 nike

我试图找出一段代码来构建一个 hostent 对象,更具体地说,它的工作部分是填充 h_addr_list 数组。

我对分配到数组中的值被强制转换为 char* 这一事实感到困惑,因为据我所知,这个数组与字符串无关。

我注意到 h_addr_list 数组实际上被键入为 char**

我看到的唯一注意到这个事实的地方是 section 9.7 in beej's Guide to Network Programming , 但即使没有解释为什么要这样输入。

h_addr_list 被键入为 char** 而不是 void*/void** 是否有原因>(或其他任何可能提供更多信息的内容)?

最佳答案

char * 不一定指 C 字符串,也指需要按字节寻址的已知长度的内存块,大概是因为它来自网络。

int8_tuint8_t 等类型被添加到 C99 之前,char * 是引用连续字节数组的唯一实用方法。事实上,struct hostent 早于将 void 类型形式化的 C89。如果今天编写,该字段将声明为 void ** 或可能是 uint8_t **

关于c - 为什么 h_addr_list(在 hostent 结构中)的类型为 char** 而不是 void*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13513878/

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