免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 1887 | 回复: 10
打印 上一主题 下一主题

二个指针的问题啊 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-15 15:31 |只看该作者 |倒序浏览
1:unsigned char buffer[1024];
*(unsigned int *)(buffer) = nSize;
*(unsigned int *)(buffer)这代表什么意思啊

2:static const unsigned int PACKET_MASK = ox0000ffff
return 5 + ((*((unsigned int*)in)) & PACKET_MASK);
((*((unsigned int*)in)) 这代表什么意思啊.
谢谢.

论坛徽章:
0
2 [报告]
发表于 2005-12-15 15:39 |只看该作者
两个强制类型转换嘛

论坛徽章:
0
3 [报告]
发表于 2005-12-15 15:42 |只看该作者
说一下具体的意思啊.
为什么要这样转.

论坛徽章:
0
4 [报告]
发表于 2005-12-15 15:46 |只看该作者
第一个nsize应该是个整数吧,这样可以把nsize存在buff的前四个字节了。
第二不是很清楚,从字面看,就是把in转成和PACKET_MASK一样的类型和按位与了

论坛徽章:
0
5 [报告]
发表于 2005-12-15 15:52 |只看该作者
第一个程序是这个意思啊,多谢,
高手写的程序就是让人看的不太舒服.

论坛徽章:
0
6 [报告]
发表于 2005-12-15 15:56 |只看该作者
*(unsigned int *)(buffer) = nSize;
为什么是把nSize寸在buffer前四个字节.
能不能一步一步的给讲讲啊

论坛徽章:
0
7 [报告]
发表于 2005-12-15 16:00 |只看该作者
1:unsigned char buffer[1024];
*(unsigned int *)(buffer) = nSize;
*(unsigned int *)(buffer)这代表什么意思啊

如果buffer数组的前4个数分别是:1 2 3 4
那么,(unsigned int *)(buffer)将把buffer的值看成整型指针,访问4个字节。
这样,*(unsigned int *)(buffer)就是buffer地址处开始,到buffer+3。
*(unsigned int *)(buffer)将为4 3 2 1,如果处理器是small-endian的话。
这里把它赋值为nsize

论坛徽章:
0
8 [报告]
发表于 2005-12-15 16:04 |只看该作者
2:static const unsigned int PACKET_MASK = ox0000ffff
return 5 + ((*((unsigned int*)in)) & PACKET_MASK);
((*((unsigned int*)in)) 这代表什么意思啊.

一步一步看就可以了
(unsigned int *)in把in强制转成unsigned int型的指针
*((unsigned int *)in)访问这个指针的值
(*((unsigned int *)in)) & PACKET_MASK)将屏蔽这个值的前16比特位,保留后16比特位

论坛徽章:
0
9 [报告]
发表于 2005-12-15 16:07 |只看该作者
我再回去慢慢理解理解

论坛徽章:
0
10 [报告]
发表于 2005-12-15 16:51 |只看该作者
没怎么理解好
unsigned char buffer[1024];
*(unsigned int *)(buffer) = nSize;

是不是这个意思啊
unsigned char buffer[20]="hello world";
unsigned int* buff;
buff = (unsigned int*)buffer;
*buff = nsize;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP