打印

inBuf[0] = (unsigned char*)(*(int*)(frame+0));

[复制链接]
1914|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hyhyhyhy|  楼主 | 2014-7-11 10:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                       
                inBuf[0]  = (unsigned char*)(*(int*)(frame+0));
                inBuf[1]  = (unsigned char*)(*(int*)(frame+4));
                inBuf[2]  = (unsigned char*)(*(int*)(frame+8));
这个怎么理解啊,完全看不懂
其中inBuf是一个unsigned char指针型数组,frame是一个unsigned char指针,frame指向的也是一个unsigned char 指针型的数组,请各位大神帮帮忙啊

相关帖子

沙发
zhangmangui| | 2014-7-13 21:45 | 只看该作者
指针高手来给详细讲解一下吧

使用特权

评论回复
板凳
啊瓜| | 2014-7-14 09:14 | 只看该作者
意思是:frame 他本身保存着一个内存地址,通过这个地址,我们找到这个数据。但是呢,比如房间号8, 找到8号后,我只要8号房间里的人出来吗还是9号/10号/11号的人也要出来?
frame 是(unsigned char * )所以原本只要8号房间的人出来,但是作者作了这个动作(int * ),所以对于16位系统,int 一般16bit,(8号+9号);对于32位系统,int 32bit,(8+9+10+11).
显然作者要求8-11号的人全部出来。(我是通过frame+4*n 猜测int 是32位,估计这是个32位系统,寻址空间4G)然后呢,最这要求这4人每人拿出一个数字,组成4byte=32位 数字。这个32位数字,作者解释了,这是一个地址,类型是(unsigned char *).

使用特权

评论回复
评分
参与人数 2威望 +5 收起 理由
hyhyhyhy + 1 赞一个!
zhangmangui + 4 很给力!
地板
zhangmangui| | 2014-7-14 22:48 | 只看该作者
啊瓜 发表于 2014-7-14 09:14
意思是:frame 他本身保存着一个内存地址,通过这个地址,我们找到这个数据。但是呢,比如房间号8, 找到8 ...

很详细

使用特权

评论回复
5
xiaox314| | 2014-7-15 10:16 | 只看该作者

使用特权

评论回复
6
NWPU_CHEN| | 2014-7-16 13:22 | 只看该作者
3楼说的不错,inBuf是一个unsigned char指针型数组,unsigned char是指针指向数据类型,那么它中存储的是指针,而指针的位数跟处理器的地址总线位数对应,32位系统指针大小32位,16位系统指针16位,由fram+4*n可看出指针长度为32位,为32位系统,int在32位系统中长度32位,4字节(fram+0)是一个基地址,int*用来说明fram+0为一个指针地址,而int说明该指针指向数据类型为int型,而本身fram为一个unsigned char指针数组,指针指向数据类型为8位,那要让指针指向数据类型变为32位的int型,也就是取出四个连续地址中fram对应的数据组成32位数(*(int*)())中int前边这个*表示取出后边指针地址对应数据,也就是对应的32位数据,最前边的unsigned char*()是说明后边括号中的数据为指针地址并和inBuf个unsigned char指针型数组指向数据类型保持一致,前边说道32位系统指针长度必须为32位,这也是他为什么用了(int*)的原因保证为32位长的指针

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
hyhyhyhy + 1
7
msblast| | 2014-7-17 11:35 | 只看该作者
本帖最后由 msblast 于 2014-7-17 12:08 编辑

用frame数组保存char类型的指针,
inBuf[0]  = (unsigned char*)(*(int*)(frame+0));//意思是从frame获取指针,然后将该指针保存到inBuf[0]

使用特权

评论回复
8
hyhyhyhy|  楼主 | 2014-7-18 19:35 | 只看该作者
啊瓜 发表于 2014-7-14 09:14
意思是:frame 他本身保存着一个内存地址,通过这个地址,我们找到这个数据。但是呢,比如房间号8, 找到8 ...

谢谢说的很好

使用特权

评论回复
9
zhangmangui| | 2014-7-18 23:30 | 只看该作者
此贴很好    顶

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

19

帖子

0

粉丝