c 结构体被传递到函数中

标签 c pointers casting

我仍在学习 C,并且有一个与我经常看到的问题相关的问题。如果我错了,请纠正我,语句 1 与语句 2 等价吗?

  1. (struct sockaddr *) &echoServAddr
  2. 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/

相关文章:

c - 用 C 语言编写具有不同子进程的 WC 模拟器

c - 如何处理bool返回类型?

c++ - 从 vector 末尾指向类变量的指针

c++ - 从基类识别派生类

JavaScript:将表达式转换为字符串

c - 为什么允许从 int 转换为 void *?

c++ - 后增量行为

c - Netcat套接字编程

json - 指向 JSON 的指针数组

sql - 将数字转换为 varchar 0 数字后消失