C语言 函数指针和指针函数区别 - C语言零基础入门教程

目录

零基础 Python 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

一.函数指针和指针函数声明的区别

1.函数指针

函数指针,其本质是一个指针,指向的是一个函数的地址。

基本声明形式:返回数据类型 + (*函数名) + (变量类型 1,...);

复制代码
//返回int类型的函数指针
int (*fun) (int);

2.指针函数

指针函数,即返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针

基本声明形式:返回数据类型 + * + 函数名 + (变量类型 1,...);

复制代码
//返回int类型指针的指针函数
int* fun(int x,int y);

二.函数指针和指针函数调用的区别

1.函数指针的调用

复制代码
/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 函数指针和指针函数区别
//@Time:2021/06/24 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/

#include<stdio.h>
int (*fun) (int,int);           //声明函数指针
int add(int x,int y)
{
    return x + y;
}
int main()
{
    fun = &add;                 //fun函数指针指向add函数
    printf("%d \n",fun(3,5));
    printf("%d \n",(*fun)(4,2));
    return 0;
}
/*
输出:
8
6
*/

需要注意得是:函数指针的参数列表要和函数指针指向的函数的参数列表一致!

2.指针函数的调用

复制代码
/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 函数指针和指针函数区别
//@Time:2021/06/24 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/


#include<stdio.h>
int* fun1(int* x)    //传入指针
{
    int* tmp = x;     //指针tmp指向x
    return tmp;       //返回tmp指向的地址
}
int fun2(int* x)    //传入指针
{
    return *x;       //返回x指向的地址对应的值
}
int main()
{
    int b = 2;
    int* p = &b;   //p指向b的地址
    //调用常规函数
    printf("func1:%d\n",*fun1(p));//输出p指向的地址的值
    //调用指针函数
    printf("func2:%d\n",fun2(p));//输出p指向的地址的值
    return 0;
}
/*
输出:
func1:2
func2:2
*/

函数指针和指针函数区别:函数指针是返回指针,指针函数是一个函数,重点看最后两个字即可!!!

三.猜你喜欢

  1. C 语言逻辑运算符
  2. C 语言三目运算符
  3. C 语言逗号表达式
  4. C 语言 sizeof 和 strlen 函数区别
  5. C 语言 strcpy 和 strcpy_s 函数区别
  6. C 语言 memcpy 和 memcpy_s 区别
  7. C 语言 数组定义和使用
  8. C 语言 数组遍历
  9. C 语言 数组下标越界
  10. C 语言 数组内存溢出
  11. C 语言 数组下标越界和内存溢出区别
  12. C 语言 二维数组定义和使用
  13. C 语言 二维数组行数和列数计算
  14. C 语言 指针声明和定义
  15. C 语言 指针 p++ / p--
  16. C 语言 p++/§++/_(p++)/_p++
  17. C 语言 使用指针遍历数组
  18. C 语言 指针和数组区别
  19. C 语言 数组指针
  20. C 语言 指针数组
  21. C 语言 指针数组和数组指针区别
  22. C 语言 空指针 NULL
  23. C 语言 void 指针
  24. C 语言 野指针
  25. C 语言 函数值传递和址传递
  26. C 语言 函数缺省参数
  27. C 语言 函数不定长参数
  28. C 语言 函数指针
  29. C 语言 指针函数
  30. C 语言 函数指针和指针函数区别

未经允许不得转载:猿说编程 >> C 语言 函数指针和指针函数区别
本文由博客 - 猿说编程 猿说编程 发布!
© 著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务

喜欢的朋友记得点赞、收藏、关注哦!!!

相关推荐
阿猫的故乡5 小时前
Vue过渡动画从入门到装X:淡入淡出、滑动、列表动画、第三方库全搞定
前端·javascript·vue.js
裕波5 小时前
Vue&ViteConf 2026 将于 7 月 18 日在上海举办,尤雨溪将现场发表主题演讲
vue.js·vite
Sam_Deep_Thinking6 小时前
Spring Boot 的启动原理是什么?
java·spring boot·后端
如果超人不会飞7 小时前
TinyRobot SuggestionPills紧凑的建议按钮组组件
前端·vue.js
如果超人不会飞7 小时前
TinyRobot Container构建优雅的AI对话容器
前端·vue.js
屋外雨大,惊蛰出没7 小时前
深入浅出Spring Boot
java·spring boot·ioc·aop
如果超人不会飞7 小时前
TinyRobot SuggestionPopover智能建议弹出框组件
前端·vue.js
协享科技8 小时前
Spring Boot 与 Go 双服务架构实践:从单体拆分到通信设计
java·人工智能·spring boot·后端·架构·golang·ai编程
zhedream8 小时前
从模糊到清晰:一次组件重构里的开发哲学
vue.js
如果超人不会飞8 小时前
TinyRobot AI 对话组件库全组件使用指南
前端·vue.js