不用sizeof()函数求当前主机上的一个int占用几个字节

时间:2015-04-09 19:49:02   收藏:0   阅读:104

1)宏定义实现:

   #define MySizeof(Value) (char*)(&Value + 1) - (char*)&Value

   (char*)&Value返回Value的地址的第一个字节, (char*)(&Value + 1)返回的是Value的地址的下一个地址的第一个字节

#include <iostream>
using namespace std;
#define my_sizeof(L_Value)  (char* )(&L_Value + 1) - (char* )&L_Value 
int main()
{
    int i;
    double f;
    double a[4];
    double* q;
    cout<<my_sizeof(i)<<endl;
    cout<<my_sizeof(f)<<endl;
    cout<<my_sizeof(a)<<endl;
    cout<<my_sizeof(q)<<endl;
    cout<<my_sizeof("aadf")<<endl;
    return 0;
}
2 )

#include <iostream>
using namespace std;
template <class Any>
int LengofArray(Any* p)
{
    return int(p+1) - int(p);
}
 
int main()
{
    int* i;
    double* q;
    char a[10];
    cout<<LengofArray(i)<<endl;
    cout<<LengofArray(q)<<endl;
    cout<<LengofArray(&a)<<endl;
    return 0;
}



评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!