函数名作参数的意义

原创 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的函数指针,进一步印证了其实质为函数指针。

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

java语言基础(41)——面向对象(类名接口名作参数和返回值)

类名作参数:实际需要一个该类的对象。 抽象类名作参数:实际需要一个继承了该抽象类的具体子类对象。 接口名作参数:实际需要一个实现了该接口的具体类的对象。 类名作为返回值类...
  • wang740209668
  • wang740209668
  • 2017年04月23日 22:33
  • 176

二维数组名作函数的参数

数组的建立方式不同,数组访问的方式会不一样 数组建立方式一: int A[2][3]={1,2,3,4,5,6}; 对于方法一建立的数组,参考谭浩强《C程序设计》的方法:用多维数组名作为函数...
  • qq_21905401
  • qq_21905401
  • 2016年09月03日 10:09
  • 174

数组名作为函数参数和数组元素作为函数参数有什么不同?‘\0’和“\0”的区别?

1.数组元素作为函数参数进行传递的时候,只要和数组类型和函数的形参一致既可以 2.数组名作为函数参数的时候进行传递的是数组的首地址,所以进行的传递是只是地址的传送,形参和实参数组的长度可以不相同,在...
  • sjfancine
  • sjfancine
  • 2013年12月03日 22:25
  • 1416

用数组作为函数的参数

数组作为函数的参数 数组名作为函数的形参 如果函数的实参是数组名,则形参肯定也为数组名或者指针变量。且实参数组和形参数组类型必须一致。函数实参是数组名,即是把数组首元素的地址传递给...
  • u011484045
  • u011484045
  • 2015年09月08日 22:41
  • 2340

浅谈数组名作形参

首先,我要说明的是,一下两个hanshu
  • stpeace
  • stpeace
  • 2014年04月08日 23:59
  • 3076

C语言中值得深入知识点----数组做函数参数、数组名a与&a区别、数组名a的"数据类型"

本文用简单的例子说明了C语言中数组做函数参数,数组名a与&a区别,数组名a的"数据类型",以及编译器的不同,相应指针所占字节的不同导致程序的细微差别。...
  • jin13277480598
  • jin13277480598
  • 2016年07月12日 21:29
  • 4964

用数组名作参数

  • wangyuehaolove
  • wangyuehaolove
  • 2013年03月12日 20:22
  • 347

js 使用方法名作参数

js里 可以把方法名作为参数传递, 这样可以在一个统一的方法中调用不同的函数,如下 function realFunc() { alert("this is the real func...
  • moreorless
  • moreorless
  • 2008年07月03日 20:05
  • 5536

Sigmoid函数的理解

原文地址:http://computing.dcu.ie/~humphrys/Notes/Neural/sigmoid.html --- Continuous Output - The sig...
  • wusuopuBUPT
  • wusuopuBUPT
  • 2017年05月15日 14:59
  • 890

【matlab】freqz函数的使用(二)

freqz函数计算线性系统的频率响应,包括幅频响应和相频响应,基本输入为线性系统的AMMA模型系数向量,一个典型的AMMA模型为 %               jw               -...
  • u013346007
  • u013346007
  • 2017年01月07日 21:13
  • 1560
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:函数名作参数的意义
举报原因:
原因补充:

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