sizeof(函数名)=?

直接上代码

#include <stdio.h>int foo(void)
{printf("hello\n");return 0;
}int main(void)
{printf("%lu\n", sizeof(foo));printf("%lu\n", sizeof(&foo));printf("%lu\n", sizeof(foo()));
}

假设保存为文件 1.c

编译:

$ gcc -Wall -pedantic 1.c -std=c99
 warning: invalid application of ‘sizeof’ to a function type [-Wpointer-arith]printf("%lu\n", sizeof(foo));

运行结果是:

1
8
4

解释:

-pedantic 选项:显示所有的 ISO C 和 ISO C++ 警告。

对于 sizeof(foo),我觉得应该是函数指示符自动转换成指针,答案应该是 8,但是并不是这样,编译器得出 1. 看来标准不允许把函数指示符作为 sizeof 的操作数,或者说这么做没有意义。

sizeof(&foo):函数指示符被显式地转换成指向函数的指针,所以答案是 8

sizeof(foo()):sizeof 的操作数是函数的返回类型,所以是 4

【End】

sizeof(函数名)=?相关推荐

  1. C++中的sizeof函数

    C++中的sizeof()函数我们常常会见到,但是更多的是只是熟悉,而并没有真正的了解过,下面就对这个函数做一个深入的介绍. sizeof是C/C++中的一个操作符(operator),其作用就是返回 ...

  2. 数组名不等于指针---sizeof()函数求数组大小错误问题

    前言: 今天在项目中需要求采样点的数量并且遍历,采样点用数组存储,自定义了一个函数想要用sizeof求其长度,然后遍历,结果失败了,查阅之后发现以下问题: 在main函数中,sizeof是可以正常工作 ...

  3. c/C++计算int / int *数组的长度;sizeof(指针),sizeof(数组名)的区别

    1.计算int *数组长度: int arrayVlenth(float *p) {int len = 0;while (*p){p++;len++;}return len; } sizeof(指针) ...

  4. 编写OD插件将IDA中分析出来的函数名导入到OD中

    逆向程序的时候,喜欢用IDA静态分析,用OD动态调试,如果把IDA分析出来的函数名称都导入到OD中,调试的时候就知道哪些函数不需要再看了.以前我一直用GODUP的map loader,但是有些时候感觉 ...

  5. 剖析数组名、函数名(不是指针常量,更不是指针)

    对于一个数组,如 int a[4];  如果只是给出数组名a,编译器不知道该取该数组的第几个元素,因此编译器不会自动取值,而是返回该数组的首地址(第一个元素的地址).其实,数组名a就是数组本身,并不是 ...

  6. arm64动态链接库通过函数名获取函数偏移

    基本思路是分析elf文件, 首先遍历节区头部Elf32_Shdr查看sh_type属性值,得到属性值为SHT_DYNSYM的节区. 其次通过名字遍历节区结点,找到类型为STT_FUNC并且名字与其相同 ...

  7. C++/C中 sizeof(指针)和sizeof(数组名)的区别

    1.sizeof(array)/sizeof(int)的含义 array是个数组 sizeof (array)就是这个数组所占的内存总量(字节数), sizeof(int)就是单个所占的内存. 所以呢 ...

  8. linux c变量命名规则,C语言中变量名及函数名的命名规则与驼峰命名法

    在程序设计中,变量名.函数名.数组名等统称为标识 符.简单地说,标识符就是一个名字.除库函数的函数名由系统定义外,其余都由用户自定义.C语言规定,标识符只能由字母(a-z,A-Z).数字 (0-9). ...

  9. android 函数名注册,Android JNI 函数注册的两种方式(静态注册/动态注册)

    在Android开发中,由于种种原因我们需要调用C/C++代码, 这个时候就要用到Android开发者都听说过的JNI(Java Native Interface)了, 在调用JNI相关方法之前, 要 ...

最新文章

  1. 【 MATLAB 】范数的必备基础知识
  2. echo -n 和echo -e 参数意义
  3. Html 教程 (9)列表
  4. 【论文相关】 技术性论文结构剖析
  5. python求列表最大值下标_切片,丝滑的字符串 | Python基础连载(三)
  6. 工业视觉镜头NAVITAR
  7. OpenCV之cvSmooth函数平滑滤波
  8. 微软大数据_我对Microsoft的数据科学采访
  9. 求解九宫格的Java_使用全排列方法解九宫格问题
  10. mysql 排名_SQL语句mysql排名、分组后组内排名、取各组的前几名
  11. 如何抓取(采集)大众点评网的坐标(经纬度)信息
  12. web前端素材整理汇总
  13. 【WPF】命令 --《深入浅出WPF》
  14. MySQL闪退解决办法
  15. python+requests爬取汽车之家二手车
  16. 桥本分数式(用递归法实现全排列)
  17. java 逆矩阵_用Java实现求逆矩阵
  18. c语言实现的学生信息查询系统
  19. 神经网络相关的概念和术语
  20. 2017年中国大数据发展趋势和展望解读(上)

热门文章

  1. NYOJ 305 表达式求值
  2. Navicat Premium 12.0.24破解
  3. 返回一个二维整数数组中最大子数组的和
  4. 如何将freemarker文件转化为html文件
  5. 『信息收集』GoogleHacking快速定位目标网站
  6. 百度2011招聘笔试题+答案解析
  7. [文摘20070913]最好的消息
  8. 程序基础:数据结构(郝斌讲解)(2)
  9. 统计1000个10以内随机数随机数出现的个数
  10. [云炬创业基础笔记]第二章创业者测试6