zoukankan      html  css  js  c++  java
  • 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)计算。



  • 相关阅读:
    1-1-LVS负载均衡
    linux的软链接和硬连接的区别
    linux的目录结构及配置文件
    C6和C7对比
    1-6 RAID级别介绍
    Animation动画(一)
    Android中的BroadCast静态注册与动态注册
    Android中Action
    隐式Intent
    Volley框架使用(POST)
  • 原文地址:https://www.cnblogs.com/fuhaots2009/p/3429183.html
Copyright © 2011-2022 走看看