当前位置: 首页 > 编程日记 > 正文

void函数返回值_(*void(*)()0)() 是什么

(*void(*)()0)()

代码分析

这是啥

e6a7cbae24f8091824e8b7b8678cee19.png

这行代码,是我今天在看《C陷阱与缺陷》时看到的,一开始很不能理解。慢慢上网摸索一些后,大致理解了,现在来分享一下我所理解的这行代码。

  • 1.首先,得明白什么是函数指针。顾明思义,函数指针是一个指向函数地址的指针。有一点需要注意,就是,如果不带函数后的返回值,将函数看作是一种“变量”的话,函数“变量”本身也是一种“指针”。请看如下代码:

baa3eb67347214b77aa31a82348e2e51.png

这段代码中,定义了一个函数,在printf的时候不带函数后的返回值,返回的便是一个地址值。

  • 2.void类型的指针,指向的地址为0(在网上看到 有网友说c语言中的NULL实际上就是一种指向void类型的指针)

  • 3.假设建立一个函数指针fp,(*fp)()就是调用fp所指向的函数的方法。如果将"fp"改为"0",直接这样写是不能运行的。0是一个常数,在这里,我们必须要对0做类型转换,代码才能生效。

  • 4.void (*fp) ()表示指向一个返回值为void的函数指针。那么,void (*) ()表示的就是“指向一个返回值为void的函数指针”的类型转换符。

  • 5.有了转换符,这个问题就迎刃而解了。(*void(*)()0)()表示的是一个变量名为0,返回值为void(即指向地址为0)的函数指针。

  • 6.最需要注意的一点是,这行代码中的变量名“0”,与void指针指向的地址0并非一码事,这是我今天一直很晕的一点......这行代码中的0是由类型转换符转换出来的,表示的地址是由void决定的。

参考了《C陷阱与缺陷》以及csdn上大佬的一些文章。可能有不对的地方,望大佬轻喷......

相关文章:

老年手机英文改中文_这些手游大作你都玩了吗?手机游戏推荐

全 世 界 只 有 1 % 的 人 关 注 郭 叔 说你 真 是 个 特 别 的 人目前100000人 已关注 郭叔说郭叔说做一个有趣的人,从认识我开始。关注攻略交流群请添加微信:GLT962464 备注老规矩:游戏名(无备注不通过!!&#xf…

MySQL数据库(五)使用pymysql对数据库进行增删改查

折腾好半天的数据库连接,由于之前未安装 pip ,而且自己用的python 版本为3.6. 只能用 pymysql 来连接数据库,(如果有和我一样未安装 pip 的朋友请 点这里http://blog.csdn.net/qq_37176126/article/details/72824404 &#xff09…

vue调试工具如何使用_教你使用Vue.js的DevTools来调试vue项目

Vue DevTools项目的官方主页位于GitHub上:https://http://github.com/vuejs/vue-devtools。你可以找到安装说明,帮助解决一些问题等等。目前该扩展在Chrome和Firefox中得到支持,同样Safari也得到了支持。如果你想从安装扩展开始&a…

Python开发【第十篇】:CSS (二)

Python开发【前端】&#xff1a;CSS Kylin Zhang 发表于 2016-11-10 13:13:57css样式选择器 标签上设置style属性&#xff1a; <body><div style"height: 48px;">第一层</div><div style"height: 48px;">第二层</div><di…

java设计一个bank类实现银行_SAP银企直连之平安银行(ECC版)

关于讲解SAP中国本地化银企直连系统功能&#xff0c;它通过ECC和S4 HANA 1909两个不同版本的演示来讲解银企直连付款相关功能实施和应用&#xff0c;有兴趣的可以联系微信号&#xff1a;timijia进行付费获取。以下资料仅供大家参考&#xff1a;说明&#xff1a;因为平安银行较S…

spark ml中一个比较通用的transformer

spark ml中有许多好用的transformer&#xff0c;很方便用来做特征的处理&#xff0c;比如Tokenizer, StopWordsRemover等,具体可参看文档:http://spark.apache.org/docs/2.1.0/ml-features.html . 但是呢&#xff0c;这些都是一些特定的操作&#xff0c;组内的同事提了一个需求…

mysql 常用函数循环_近30个MySQL常用函数,看到就是学到,纯干货收藏!

概念&#xff1a;相当于java中的方法&#xff0c;将一组逻辑语句封装在方法体中&#xff0c;对外暴露方法名隐藏了实现细节提高代码的可重用性使用&#xff1a;select 函数名(实参列表)【from 表】 【】中内容可省略正文&#xff1a;字符函数&#xff1a;length&#xff1a;…

连接Oracle错误:800a0e7a未找到提供程序的解决

一、现象&#xff1a; C#程序中需要以ProviderOraOLEDB.Oracle.1方式访问ORACLE数据库。但程序执行时报异常&#xff1a;未在本地计算机注册“OraOLEDB.Oracle.1”提供程序 二、解决方案&#xff1a; 1、在Oracle安装目录找到Oracle的主程序目录&#xff0c;点击鼠标右键->属…

定义一个属性_Python property属性

1. 什么是property属性一种用起来像是使用的实例属性一样的特殊属性&#xff0c;可以对应于某个方法# ############### 定义 ###############class Foo: def func(self): pass # 定义property属性 property def prop(self): pass# ############### 调用 ###############foo_obj…

MySQL 字段类型知识

tinyint(m)  值的范围&#xff1a;-128 ~ 127&#xff1b;unsigned 时&#xff0c;0 ~ 255。存储占用1字节 m 默认为4&#xff0c;和存储空间、数字位数没有关系&#xff0c;表示左侧补空格&#xff08;默认&#xff0c;声明 zerofill 则补0&#xff0c;如0001&#xff09;到…

mysql 单实例部署_Mysql 数据库单机多实例部署手记

最近的研发机器需要部署多个环境&#xff0c;包括数据库。为了管理方便考虑将mysql数据库进行隔离&#xff0c;即采用单机多实例部署的方式。找了会资料发现用的人也不是太多&#xff0c;一般的生产环境为了充分发挥机器性能都是单机单实例运行&#xff0c;再进行一系列的配置调…

用python做一个图片验证码

看一下做出来的验证码长啥样 验证码分析 1. 有很多点 2. 有很多线条 3. 有字母&#xff0c;有数字 需要用到的模块&#xff1a; 1. random 2. Pillow (python3中使用pillow) 安装pillow : pip install pillow pillow的用法&#xff1a; 创建一张图片&#xff1a; from PIL im…

地图测量面积工具app_全站仪的使用面积测量

测量与地图制作见习全站仪使用11 / 20#2020 #全站仪是全站型电子速测仪的简称&#xff0c;是电子经纬仪、光学测距仪及微处理器相结合的光电仪器。其可直接测量距离、角度、坐标&#xff0c;根据三角函数原理&#xff0c;已知两点坐标信息推算出无数个第三点的坐标信息。下面让…

Palette使用

1.定义: Palette&#xff1a;可以在一张图片里面分析出一些色彩特性&#xff1a;主色调、鲜艳的颜色、柔和颜色等等…… 2.使用: 1). 2).效果图 3.获取颜色样品: 1). 2).颜色组装算法: 3).效果图:转载于:https://www.cnblogs.com/jeffery336699/p/9294681.html

PYTHON 写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者...

def a2(arg):if len(arg) > 2:del arg[2:]li [12,13,14,15] a2(li) print(li) 转载于:https://www.cnblogs.com/zgyc/p/6229722.html

文件流能转换格式吗_amr转换mp3格式文件

MP3是非常标准的音频数字编码格式。区别于其他格式的优势在于&#xff0c;它可以在不降低音质的前提下&#xff0c;大幅的降低文件的大小。因此MP3格式应用范围极广&#xff0c;我们日常生活中用到的歌曲格式也多为MP3。今天要给大家说的是如何把amr格式的音频文件转换成mp3格式…

1196: 数星星(二)(结构体专题)_福利:最新导数6大专题!高分段提分有困扰?听北大状元漫谈提分...

这是一篇适合数学120分以上的高中生深度研读的随感。文末有福利&#xff01;振宇老师从教的十几年中&#xff0c;遇到高分段学生最大的困扰便是&#xff1a;130分以上每提一分便需要付出极大的努力。究其原因&#xff0c;便是思维不够严谨全面&#xff0c;无法拿全分&#xff0…

RTMP协议中的Chunk Stream ID (CID)的作用

一、协议分层 RTMP包是以Message的结构封装的&#xff0c;结构如下所示&#xff1a; 1&#xff09;Message Type ID在1-7的消息用于协议控制&#xff0c;这些消息一般是RTMP协议自身管理要使用的消息&#xff0c;用户一般情况下无需操作其中的数据。 Message Type ID为8&#x…

fceux源码解析_fceux源码解析_从源代码制作deb包的两种方法以及修改已有deb包(转载)...

1. 原理1) deb包通常包含两部分&#xff1a;控制信息(DEBIAN目录)、安装内容(模拟"/"目录)2) 通过解开已有的deb包看其中内容i. 释放安装内容到dirname目录中$ dpkg-X xxx.deb dirnameii. 释放控制信息到当前目录下的DEBIAN子目录中$ dpkg-e xxx.deb2. 准备1) 安装相…

Centos 7 意外断电如何处理

拔U盘的时候&#xff0c;不小心碰到了主机上的开机键…… 还好默认的响应动作是睡眠…… 还不知道 CentOS 怎么样应对意外断电呢&#xff1f;&#xff01; 转载于:https://www.cnblogs.com/liaozt/p/6232189.html

静茹docker容器的几种方法_Docker介绍及使用

什么是容器&#xff1f;容器就是在隔离的环境运行的一个进程&#xff0c;如果进程停止&#xff0c;容器就会销毁。隔离的环境拥有自己的系统文件&#xff0c;ip地址&#xff0c;主机名等&#xff0c;kvm虚拟机&#xff0c;linux&#xff0c;系统文件程序&#xff1a;代码&#…

Elasticsearch 6.3.1、Head插件 安装及配置

安装Elasticsearch Elasticsearch下载地址&#xff1a;https://www.elastic.co/cn/downloads/elasticsearch 也可以直接使用wget下载到某目录下, 本文所有下载的包都放在 /home/tools 中&#xff0c; 解压后移到 /home/apps目录下  wget https://artifacts.elastic.co/downloa…

Android中的eventBus传值

第一步&#xff1a;在build.gradle中添加依赖dependencies { compile org.greenrobot:eventbus:3.0.0} 第二步&#xff1a;创建一个 Event类&#xff1a; 注意&#xff1a;enum 不是classpublic enum Event {//消息名&#xff0c;可以根据这个名字判断是哪个消息 IMAGE_LOA…

mysql 优化器算法_SQL 查询优化器底层原理解析【MySQL 篇】

前言SQL 执行流程中有一个模块叫做查询优化器&#xff0c;这个模块的功能主要是对 SQL 语法树进行逻辑优化和物理优化&#xff0c;最终生成执行计划交给执行引擎执行 SQL。查询优化器主要分为两部分&#xff1a;一部分是逻辑优化&#xff0c;一部分是物理优化。逻辑优化会将 SQ…

gprs发送信号对方如何接收_和接收缓冲区比较:Netty发送缓冲区是如何设计的,why?...

点击上方蓝字关注我吧&#xff01;本篇文章大概3300字&#xff0c;阅读时间大约10分钟前面文章&#xff0c;透彻分析了Netty的接收缓冲区优化的套路和实现细节&#xff0c;以及写数据和刷新数据的宏观流程和细节&#xff1a;从源码出发&#xff1a;在宏观上把握Netty写数据到应…

原 史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本)

转载请标明出处&#xff1a; 原文首发于&#xff1a;https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f8-bus/ 本文出自方志朋的博客 转载请标明出处&#xff1a; Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间…

python读取数据校验数据_Python通过Schema实现数据验证方式

Schema是什么&#xff1f;不管我们做什么应用&#xff0c;只要和用户输入打交道&#xff0c;就有一个原则--永远不要相信用户的输入数据。意味着我们要对用户输入进行严格的验证&#xff0c;web开发时一般输入数据都以JSON形式发送到后端API&#xff0c;API要对输入数据做验证。…

String,StringBuffer

String类代表不可变的字符序列。 String s1 "hello"; String s2 "hello"; s1 s2 > true "hello"是字符串常量&#xff0c;存在data seg中&#xff0c;编译器对data seg有优化&#xff0c;对于已经有的数据&#xff0c;不是重新分配空间&a…

蒙特卡洛粒子滤波定位算法_粒子滤波——来自哈佛的详细的粒子滤波器教程【1】...

本文原版链接&#xff1a;https://www.seas.harvard.edu/courses/cs281/papers/doucet-johansen.pdf本文是哈佛大学相关研究人员于2008年发表的一篇关于粒子滤波的详细教程&#xff0c;至今已被引用1687次。目录&#xff1a;介绍Introduction1.1 序言Preliminary remarks1.2 教…

人脸识别的一些资源

人脸识别的全部源代码(在Visual C6.0下可以运行识别)http://www.61ic.com/Download/DaVinci/Code/201304/121592.html 智能分析接口&#xff08;支持车牌识别&#xff0c;人脸识别等智能类型&#xff09;提供DEMO和源码&#xff0c;供参考&#xff01;http://www.61ic.com/Down…