函数指针

发布时间:2024年01月08日

一、函数指针复习

内存的作用-----用来存放程序运行过程中的

  1. 数据

  2. 指令

1.1、 内存四区

堆区

栈区

数据区

代码区

1.2、C语言中内存数据的访问方式

直接访问:通过所在空间名称去访问

间接访问:通过所在空间首地址去访问 *地址值 此时的*为间接访问运算符

1.3、C语言中函数调用方式:

直接调用:通过函数名去调用函数

间接调用:通过函数在代码区所对应的那份空间的首地址去调用

堆区的内容只能采用间接访问,*

int func(int a,int b)
{
 ? ?//......
}
?
int (int a,int b) ?* pf;//语法错误
int *pf(int a,int b);//函数声明语句
int (*pf)(int a,int b);//定义一个函数指针
pf = &func;//&运算符后面如果是函数名的话可以省略不写
pf = func;
?
y = func(3,4);//直接调用
y = (*pf)(3,4);//间接调用,*运算符后面如果是函数指针类型则可以省略不写
y = pf(3,4);//间接调用
?
typedef int myint;
typedef int (*)(int,int) ?pft;//语法错误
typedef int (*pft)(int,int) ;
pft pt;

大部分采用直接调用

函数名就代表了函数在代码区函数的存放的首地址

1.4 适用场合

前提:当有很多个同类函数待被调用时

A处:知道所有函数名,由此处来决定B处将会调用哪个函数

B处:负责调用A处指定的函数

思考:A处如何告诉B处被调用的是哪个函数呢,无非两个办法:

  1. 告诉B处函数名,怎么做呢?传字符串----“函数名”? C语言没有对应语法支持

  2. 告诉B处对应函数在代码区的地址

文章来源:https://blog.csdn.net/2302_76785838/article/details/135447198
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。