我仍在学习 C,并且有一个与我经常看到的问题相关的问题。如果我错了,请纠正我,语句 1 与语句 2 等价吗?
(struct sockaddr *) &echoServAddr
struct sockaddr echoServAddr
如果我理解正确的话,我们会将 &echoServAddr
转换为与 sockaddr
框架相同的结构。
那么下面的代码是按地址传递结构体吗?
/* Bind to the local address */
if (bind(servSock, (struct sockaddr *) &echoServAddr, sizeof(echoServAddr)) < 0) {
perror("bind() failed");
exit(1);
}
最佳答案
假设它们都是函数参数。这些是不同的。第一个是通过引用传递结构。第二个是按原样传递结构 - 复制整个数据。
绑定(bind)接受const struct sockaddr *
因为它是第二个参数,所以这是正确的代码。
关于c 结构体被传递到函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14247178/