函数名作参数的意义

原创 2016年08月30日 19:57:51
最近在ARM上调试时犯了一个低级语法错误,错把函数名当作函数返回值了,代码如下:
if(ObsAvdSignalReceived)
        printf("有障碍\r\n");
 else
        printf("无障碍­\r\n");
代码中ObsAvdSignalReceived()是一个函数,返回值为bool类型,表示是否接收到避障信号。
按上述写法发现不管是否接收到信号,总是输出“有障碍”

问题就在于把函数名作为if()语句的条件,函数名代表的是函数地址,用十六进制形式打印:
printf("ObsAvdSignalReceived的地址:%x\r\n",ObsAvdSignalReceived);
串口输出如下:
地址为:0x8002e79
这是一个正值,很明显条件恒成立,所以出现上述错误。
另外,编译时会有如下警告:
warning:specified type 'unsigned int' but the argument has type 'uint8_t (*) (void)'
可以看到ObsAvdSignalReceived的类型是返回值为uint8_t,参数为void的函数指针,进一步印证了其实质为函数指针。

结论:写代码时用到函数返回值切记在函数名末尾加上(),表明是返回值。
版权声明:本文为博主原创文章,转载请声明出处:)

用数组名作函数参数,此时形参与实参都用数组名

题目描述:用选择法对数组中10个整数按由小到大排序 代码如下:#include using namespace std; int main() { void select_sort(int a...
  • jrz1900
  • jrz1900
  • 2015年04月23日 23:02
  • 452

C++用数组名作函数参数

C++用数组名作函数参数_微学苑 常量和变量可以用作函数实参,同样数组元素也可以作函数实参,其用法与变量相同。数组名也可以作实参和形参,传递的是数组的起始地址。 用数组元素作函数实参 ...

数组名作函数参数和指针变量作函数参数

数组名作函数参数和指针变量作函数参数题目:输入5个整数,并为其中的前n个整数从小到大进行排序; 四种情况: Example1:数组名作实参,数组名作形参; Example2:指针变量作实参,数组名作...

c语言 关于数组名作参数传递问题

本文以 int  型为例,以函数func为例 (1)将一维数组名  iExamC 作为参数传递情况, void func( int p [ ], int n ){ /...

数据结构与算法C++描述(10-插曲)---函数名作形参

在文献[1]中,描述二叉树时利用了函数名作为形参。在此加以说明与解释。1.函数参数的传递方式我们都知道,函数参数的传递一般有:值传递、指针传递和引用传递。先来回顾一下: 值传递时,先临时分配一块内存,...

函数参数名后面加const的意义

 const int* i=0;  代表i是常量,里面的值不能够变 int* const i=;  代表指针i是常量,所指的内容可以修改 const对象只能调用const成员函数(所...

双重指针做函数参数的意义

一. 回顾指针概念: 今天我们又要学习一个叫做指向另一指针地址的指针。让我们先回顾一下指针的概念吧! 当我们程序如下申明变量: short int i; char a; short...

【Android】自定义样式与View的构造函数中的第三个参数defStyle的意义

Android中自定义样式与View的构造函数中的第三个参数defStyle的意义 零、序 一、自定义Style 二、在XML中为属性声明属性值   1. 在l...

Android中自定义样式与View的构造函数中的第三个参数defStyle的意义

零、序   系统自带的View可以在xml中配置属性,对于写的好的Custom View同样可以在xml中配置属性,为了使自定义的View的属性可以在xml中配置,需要以下4个步骤: ...

C++小技巧emun namespace 指针*、&(在函数里做参数) exit与return Win32宏定义 双等号代表意义

1.在编程的时候应当少用define来进行宏定义,应当尽量使用enum,其中主要是应为enum是类型安全的;二其是在预编译之后其左右的,这就有利于调试,例子:   a.类型安全:    其中enum的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:函数名作参数的意义
举报原因:
原因补充:

(最多只允许输入30个字)