我期待到用C socket编程,我很好奇,为什么你要传递一个参数,并在样功能的该参数的长度bind()和connect()?为什么不在sizeof()函数内部使用?
因为它提供了一种简单的方法来处理具有相同API的许多不同类型的协议.
由于套接字可以使用许多不同的底层协议(如@larsman所指出的),因此调用无法准确地知道它正在传递给哪种类型的结构.struct sockaddr各种类型都有一些基本的"继承" .
此外,它提供了一些前向兼容性; 对于一个版本的库编译的二进制文件可能是针对更高版本运行的,其中地址类型可能已经增长(例如支持IPv6).
通过将调用者对大小的想法传递给被调用函数,被调用函数可以注意不要覆盖内存.