sizeof的实现 |
jerry 发表于 2008-5-15 15:06:00
|
//关于模拟sizeof函数实现计算类型大小 //查了很多资料,也用过模板 //但都无法获得对象的类型 //下面是一个用宏来实现的方法 #define my_sizeof(L_Value) ( \ (char *)(&L_Value + 1) - (char *)&L_Value \ )
#i nclude <stdio.h> #i nclude <stdio.h> int main(void){ int i; double f; double a[4]; double *p;
printf("%d\n", my_sizeof(i)); printf("%d\n", my_sizeof(f)); printf("%d\n", my_sizeof(a)); printf("%d\n", my_sizeof(p)); printf("%d\n", my_sizeof("abdegh"));
return 0; }
//模板的类型操作 #i nclude<iostream>
using namespace std;
template<class Any> int LengthOfArray(Any * p) { return int(p+1) - int(p); }
int main() { double * q; char a[10];
cout << LengthOfArray(q)<<endl; cout << LengthOfArray(&a)<<endl; return 0; } |
|
|