[技术问答] 正确认识sizeof

[复制链接]
688|0
 楼主| youtome 发表于 2025-2-17 10:34 | 显示全部楼层 |阅读模式
非函数
    首先大家需要明确,sizeof不是一个函数而是一个操作符,一些小伙伴经常口头上挂着"sizeof函数",这种说法是不正确的。

    应该也好理解,比如sizeof(int),里面并没有传递实参,如果其为函数便不成立,所以sizeof仅仅只是一个操作符,继续实验一下:
参考demo:
1#include <stdio.h>
2#include <stdlib.h>
3
4/***************************************
5 * Fuction: sizeof简单测试
6 * Author:   (公众号:最后一个bug)
7 **************************************/

8int main(int argc, char *argv[]) {
9    int a = 5;
10    printf("sizeof(char)= %d\n",sizeof(char));
11    printf("sizeof(int)= %d\n",sizeof(int));
12    printf("sizeof(float)= %d\n",sizeof(float));
13    printf("sizeof(double)= %d\n",sizeof(double));
14    printf("sizeof(a)= %d\n",sizeof(a));
15    return 0;
16}
结果:

4959067b1cf6ef06c5.png
分析一下:
  • 汇编中5个红线标记处对应着C语言中5个sizeof使用点,在最终的汇编代码中并没有看到sizeof的痕迹。


  • 同时还可以确认一点的是sizeof在编译阶段就完成了转化,所以经常有小伙伴考虑到sizeof会不会很耗时间等等,从这里看它仅仅只是一个常量,对程序的运行影响与常量是一致的。



您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

4231

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部