我是靠谱客的博主 明亮滑板,最近开发中收集的这篇文章主要介绍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;
}
输出: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)计算。



最后

以上就是明亮滑板为你收集整理的C语言简单实现sizeof功能代码的全部内容,希望文章能够帮你解决C语言简单实现sizeof功能代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部