• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

带参数函数的调用,在调用时为什么可以不用填写参数。

阿文 2018-10-26 浏览量:1485

列如:

void abc(unsigned short address);

void (*add)(unsigned short);

void abc(unsigned short address)
{
;

;
}

add = abc;

请问调用abc(unsigned short address);​这函数时address的数值是多小?


0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 你需要学习函数指针(变量)、指针函数等等概念啊。

    这里add=abc不是函数调用,而是给函数指针变量赋值,

    void (*add)(unsigned short);

    上面这句是定义了一个函数指针变量add,它指向的函数可以接受一个无符号short参数。

    注意与

    void *add(unsigned short);的区别,这里是定义(声明)一个返回指针变量的函数。

    • 发布于 2018-10-26
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:9
  • 这是考我们的阅读理解吗?

    你是在问哪一句代码?

    如果是add = abc;的话

    这句不是调用函数,是把abc的函数指针赋值给add

    • 发布于2018-10-26
    • 举报
    • 评论 2
    • 1
    • 0
阿文 回复了 Spirit :是把abc的函数指针赋值给add???那么为什么abc函不用填写参数也可以编译通过,不是应该abc(1,2)这样子吗? 回复
Spirit 回复了 阿文 :再次确认一下,您问的是不是add = abc;这一句?这里的abc并不是调用函数,而是取函数的指针。函数名就是函数的起始地址。所以,不用加参数。 回复

  • 有参数的函数在调用的时候要有参数的,如果没有参数也编译通过,但是应该是有警告的。一个完整的程序应该没有警告才对。如果你不写参数,编译器默认传入了0(以前遇到过,好像是这样)。不过我觉得这和编译器有一定的关系。
    • 发布于2018-10-26
    • 举报
    • 评论 0
    • 1
    • 0

  • 这个函数指针把abc把函数绑定add函数指针
    • 发布于2018-10-26
    • 举报
    • 评论 0
    • 1
    • 0

  • 你书写add=abc语句的意思是将abc函数的指针赋值给add,既然是函数指针,那实参肯定就是0了。

    • 发布于2018-10-27
    • 举报
    • 评论 0
    • 1
    • 0

  • 这是个指针赋值的,传过去的,实际上是这个abc函数在内存中的地址
    • 发布于2018-10-28
    • 举报
    • 评论 0
    • 1
    • 0

  • 小弟明白了,把abc函数首地赋add指针,到时可以直接用add指针就可以调用abc函数,谢谢各位的帮助
    • 发布于2018-10-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个是一个指针的操作,实际表示的还是你的地址参数
    • 发布于2018-11-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 那个参数实际是一个地址,当然要传入这个参数才可以使用
    • 发布于2018-11-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 表示的是一个指针,传递的过程中要根据参数使用
    • 发布于2018-12-09
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

带参数函数的调用,在调用时为什么可以不用填写参数。