方法一:宏定义
#include<iostream>
using namespace std;
#define LengthOf(Value) (char*)(&Value+1)-(char*)&Value
int main()
{int i;double d;double *q;char a[10];printf("%d\n",LengthOf(i)); //printf("%d\n",sizeof(i));printf("%d\n",LengthOf(d));printf("%d\n",LengthOf(q));printf("%d\n",LengthOf(a));return 0;
}
结果:4 8 4 10
方法二:template
#include<iostream>
using namespace std;
template <class Any>
int LengthOf(Any *p)
{return int(p+1)-int(p);
}
int main()
{int *i;double *d;char a[10];printf("%d\n",LengthOf(i)); //printf("%d\n",sizeof(i));printf("%d\n",LengthOf(d));printf("%d\n",LengthOf(&a));
}
结果:4 8 10