您现在的位置: 爱51代码网 >> 范文 >> 文章正文
为什么在发送的时候要把一个结构体指针强转成char*类型的指针呢,这样转过后,pStr指向的又是什么内容

为什么在发送的时候要把一个结构体指针强转成char*类型的指针呢,这样转过后,pStr指向的又是什么内容

struct struCommPacket{     int PackLength;     int command;     int data_length;      BYTE* command_data;   };   int main(int argc,char * argv[]) {     struct struCommPacket *pStr;     struct struCommPacket Str = {10, 11, 12, "hello"};         pStr = &Str;     //sockfd = socket(..)......     //....     send(sockfd, <SPAN style="COLOR: #ff0000">(char *)pStr</SPAN>, sizeof(struct struCommPacket), MSG_NOSIGNAL);

如上面,建立socket通信后发送一个结构体过去,但为什么在发送的时候要把一个结构体指针强转成char*类型的指针呢,这样转过后,pStr指向的又是什么内容???这里不是很懂啊,高手在哪里....!!

如果函数的参数要求这样,那么就是正确的,至于send会把它变成什么类型,可以忽略,这就是接口

接口是void*,所以随便传什么类型的参数都是ok的,但是,把它强转成char*过后,这个指针指向的内容是什么呢,也就是说这时发送的内容是什么?毕业论文 
(char *)pStr:这里用不用char *强制转化都无所谓,send函数发送从pStr指向的地址开始的,大小为sizeof(struct struCommPacket)的连续内存上的数据;

pStr指向的始终是结构体Str = {10, 11, 12, "hello"};的首地址,不管用什么类型来强制转化pStr,它一直指向Str的首地址不变,只是引用方式变了;

打印指针是printf("%p\n", pStr);,%s是打印字符串;

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    E-business suite system servic
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    asp中有一段javascipt的网页鼠标
    sharepoint 2010 获取用户信息Us
    设计包含max函数的队列
    随机从数组中取出指定的不重复的
    mysql主从同步延迟方案解决的学习
    青岛科学六年级下册教材分析
    生日旅行总结
    sharepoint 2010 获取用户信息Us
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    青少年吸烟心理探析
    保险受益人制度相关问题的探讨
    机房收费系统个人重构
    编写一个存储过程完成学生转
    描述你所了解的数据库对象
    Oracle数据库中实例和数据库
    C# 数据库控件绑定更新问题 
    WPF的Tabcontrol的selection
    C#多窗体属于多线程吗
    将DataTable的Data到生成CSV
    Strus2 + pager-taglib 实现
    linux内核启动时R2的值来历
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |