memset初始化结构体为什么要用&

memset初始化结构体为什么要用&,第1张

这几天在学习socket编程,遇到memset初始化结构体的问题,在这里记录一下。


看来一个问题

    struct sockaddr_in seraddr;
    memset(&seraddr, 0, sizeof(seraddr));

memset将结构体初始化为0,到这里都没什么问题。

可是将seraddr结构体初始化那memset的第一个参数为什么是&seraddr,而不是seraddr?

经过一番搜索后找到了答案如下:

不论是我们定义普通的变量还是结构体变量,对应的变量都代表两种含义:

  • 变量本身的值
  • 变量存放的首地址

一个变量有两种含义这样就不方便使用了,因此C语言进行了如下规定:

  • 变量代表变量本身的值
  • &变量代表变量本身的地址

memset函数的功能是初始化从某个地址开始的n个字节,因此第一个参数应该是地址,因此不应该是seraddr,而是&seraddr。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1498273.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-25
下一篇2022-06-25

发表评论

登录后才能评论

评论列表(0条)

    保存