函数指针和指针函数

函数指针(Function Pointers)和指针函数(Functions Returning Pointers)是两个不同的概念,但它们都与指针有关。

  1. 函数指针:是一个变量,它的值是一个函数的地址。你可以通过这个指针来调用函数。
  2. 指针函数(或称为返回指针的函数):是一个函数,它的返回值是一个指针。
  3. 函数指针通常用于回调函数(callback functions)、函数表(function tables)、信号处理等场景。
  4. 指针函数通常用于动态内存分配、创建数据结构(如链表节点)、返回多个值等场景。

函数指针(指向函数的指针):函数指针是指一个指针,它指向一个函数。在声明函数指针时,你需要指定该函数返回的类型以及它的参数类型。函数指针的声明通常看起来像这样:

pointerFunction 是一个函数,它接受一个 int 类型的参数 size,并返回一个指向 int 的指针。

指针函数(返回指针的函数):指针函数是指一个函数,其返回类型是一个指针。它的声明通常看起来像这样:

functionPointer 是一个函数指针,它指向一个接受 int 并返回 int 的函数。在 main 函数中,我们将 doubleValue 函数的地址赋值给 functionPointer,然后通过 functionPointer 调用该函数。

注意在声明函数指针时,(*functionPointer) 周围的括号是必要的,因为 * 运算符的优先级低于 ()。如果你省略了括号,编译器会将其解析为一个返回函数指针的函数,而不是一个指向函数的指针。

总结来说,指针函数是返回指针的函数,而函数指针是指向函数的指针。

联系:

  1. 都涉及指针:两者都与指针有关,但它们分别表示不同类型的指针。
  2. 都可以作为参数:函数指针和指针函数都可以作为其他函数的参数。但它们的含义和用途不同。
  3. 在某些情况下可以互换:虽然它们是不同的概念,但在某些特定的编程场景中,你可能需要编写一个返回函数指针的函数(即,一个返回函数指针的指针函数)。这种高级用法在C语言中相对少见,但在某些框架和库中可能会遇到。

函数指针示例:

指针函数示例:

在这段代码中,createIntArray函数是一个指针函数,它接受一个整数size作为参数,并返回一个指向新分配的整数数组的指针。在main函数中,我们调用createIntArray函数来创建一个数组,并使用返回的指针来操作该数组。最后,我们使用free函数来释放之前分配的内存。

请注意,在实际编程中,应该始终检查动态内存分配是否成功,并在不再需要时释放内存,以避免内存泄漏。在这个例子中,如果malloc调用失败,createIntArray函数将输出错误消息并退出程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值