C语⾔简单实现sizeof功能代码
sizeof不是函数,⽽是运算符,C/C++语⾔编译器在预编译阶段的时候就已经处理完了sizeof的问题,也就是说sizeof类似于宏定义。
下⾯给出⼀个sizeof的⼀个宏定义实现版本
#define sizeof(L_Value) ((char*)(&L_Value + 1) - (char*)(&L_Value))
实验⼀:
#define mysizeof(L_Value) ((char*)(&L_Value + 1) - (char*)(&L_Value))
int main(){
int a[5]={1,2,3,4,5};
printf("%d",mysizeof(a));
char c=getchar();
return 0;
}
c语言编译器怎么用不了输出:20
不过本⽂的mysizeof只能对已定义的变量求⼤⼩
实验⼆:
#define mysizeof(L_Value) ((char*)(&L_Value + 1) - (char*)(&L_Value))
int main(){
int a[5]={1,2,3,4,5};
printf("%d",mysizeof(&a));
char c=getchar();
return 0;
}
此时会报语法错误,因为&a并不是我们定义的变量,详细说是&a不是左值,⽤宏替换后变为((char*)(&&a + 1) - (char*)(&&a)),&&a有语法错误。我们的版本还是不够强⼤啊,不知道C语⾔设计中是怎么实现的sizeof(&a)计算。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论