C语言指针(三)函数指针
【摘要】 在我们定义函数的时候,编译器也会在内存空间给函数开辟一个内存,而该内存的首地址就是函数的内存地址,而函数指针就是指向该内存地址的。
3. 函数指针
在我们定义函数的时候,编译器也会在内存空间给函数开辟一个内存,而该内存的首地址就是函数的内存地址,而函数指针就是指向该内存地址的。
3.1 函数
众所周知,C语言是面向过程的语言,或者称函数式编程。
而在C语言中,函数也确实起了很大的作用,在C语言的学习中,你见过最多的可能就是main
函数,同时也是你第一个见得函数。
我们来看看这个main函数
int main(){return 0;}
我们把他浓缩成一行,比较好瞅
❝
int是返回类型,每个函数都要有这个,不返回东西的函数的返回值类型为void main是函数名,固定的,无法重载 括号里面是参数列表,一般是默认没有,也可以传递 void
或者int argc, char const *argv[]
{}大括号里面是函数的具体实现代码,比如说 printf("Hello World!");
return 是函数结束的关键字,返回值为0表示程序正确运行,为其他表示有其他异常 切记main函数不要
❞void main(){},这个真的很重要
3.2 指向函数的指针
见名知意,这个东西也是一个指针,只不过他指向的是一个函数,准确来说是函数在内存空间中开辟空间的头地址。
定义也是有亿点点麻烦,不过却也不是不好理解。
定义:
int (*funP)(int num1, int num2); // 定义一个函数,有两个整型参数
因为运算符优先级的存在,所以我们需要对变量名与*进行首先运算
使用:
#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;
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)