关于指针数组长度的问题---特别请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)这样一个整型指针进行解引用是什么含义?
(由于我本人刚刚开始这方面的工作,以上问题有不对的地方还请海涵!)