前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言指针(三)函数指针

C语言指针(三)函数指针

作者头像
玖柒的小窝
修改2021-09-26 09:18:04
2K0
修改2021-09-26 09:18:04
举报
文章被收录于专栏:各类技术文章~各类技术文章~

3. 函数指针

在我们定义函数的时候,编译器也会在内存空间给函数开辟一个内存,而该内存的首地址就是函数的内存地址,而函数指针就是指向该内存地址的。

3.1 函数

众所周知,C语言是面向过程的语言,或者称函数式编程。

而在C语言中,函数也确实起了很大的作用,在C语言的学习中,你见过最多的可能就是main函数,同时也是你第一个见得函数。

我们来看看这个main函数

代码语言:javascript
复制
int main(){return 0;}

我们把他浓缩成一行,比较好瞅

  • int是返回类型,每个函数都要有这个,不返回东西的函数的返回值类型为void
  • main是函数名,固定的,无法重载
  • 括号里面是参数列表,一般是默认没有,也可以传递void或者int argc, char const *argv[]
  • {}大括号里面是函数的具体实现代码,比如说printf("Hello World!");
  • return 是函数结束的关键字,返回值为0表示程序正确运行,为其他表示有其他异常

切记main函数不要void main(){},这个真的很重要

3.2 指向函数的指针

见名知意,这个东西也是一个指针,只不过他指向的是一个函数,准确来说是函数在内存空间中开辟空间的头地址。

定义也是有亿点点麻烦,不过却也不是不好理解。

定义:

代码语言:javascript
复制
int (*funP)(int num1, int num2); // 定义一个函数,有两个整型参数

因为运算符优先级的存在,所以我们需要对变量名与*进行首先运算

使用:

代码语言:javascript
复制
#include <stdio.h>

/*
  定义一个两数求和函数
  返回两个数的和的结果
*/
int sum(int num1, int num2)
{
    int ans = num1 + num2;
    return ans;
}

int main(int argc, char const *argv[])
{
    int (*funP)(int num1, int num2);    // 定义一个函数,有两个整型参数
    funP = sum;         // 将函数sum的地址给funP
    int ans = funP(1, 2);   // 使用指针使用函数
    printf("%d", ans);
    return 0;
}

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3. 函数指针
    • 3.1 函数
      • 3.2 指向函数的指针
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档