| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 888 人关注过本帖
标题:关于指针数组长度的问题---特别请corrupt兄进入
只看楼主 加入收藏
蓝天飞鸿
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-10-2
收藏
 问题点数:0 回复次数:4 
关于指针数组长度的问题---特别请corrupt兄进入

非常感谢corrupt兄对于这个问题的解释!

你在上一篇文章中
int GetNewBufferSize(void *p)
{
if ( p )
{
return *(int*)((char *)p-16);
}
else
{
return 0;
}
}
关于*(int*)((char *)p-16)的理解,还想请问一下corrupt兄。
(char *)p 是将任意指针类型的指针p转化成char指针类型,从而获得包括数组本身和前16位在内的整个数组的总位数,且最小单元为 1 位(而不是2位,4位或者8位),然后再将前16位刨除,就是数组本身的净位数。随后将这个净位数用int指针的最小单元去分解(int *),转化成整型指针。那么,对于(int *)((char *)p - 16)这样一个整型指针进行解引用是什么含义?

(由于我本人刚刚开始这方面的工作,以上问题有不对的地方还请海涵!)

搜索更多相关主题的帖子: corrupt兄 指针 数组 char int 
2006-10-05 23:36
majia775
Rank: 1
等 级:新手上路
威 望:2
帖 子:94
专家分:0
注 册:2006-9-11
收藏
得分:0 
楼上兄弟太谦虚了,有点拿不住

我不是随便的人,我随便起来不是人.... http://majia775.
2006-10-06 01:17
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 
我前面估计说错了,,不是16位,应该是16字节...

所以 这样也是可以的...
void main()
{
int *arry=new int[20];
int size=(*(arry-4))/sizeof(arry[0]);
cout<<size<<endl;
delete []arry;
}


2006-10-06 07:46
混世卓人
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2006-8-6
收藏
得分:0 

好东西,回去研究下再来仔细看。。


2006-10-06 14:46
蓝天飞鸿
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-10-2
收藏
得分:0 
谢谢corrupt兄,你的建议很值得研究!
2006-10-06 18:41
快速回复:关于指针数组长度的问题---特别请corrupt兄进入
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054539 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved