uc os相关的C语言知识点1-函数指针

本文详细介绍了C语言中函数指针的概念及使用方法。包括函数指针的基本定义、使用形式,以及如何将函数指针作为参数传递给其他函数进行调用等高级应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开始读uc os的代码了,发现很多C语言的东西,之前没搞懂的,慢慢积累。

就象某一数据变量的内存地址可以存储在相应的指针变量中一样,函数的首地址也以存储在某个函数指针变量里的。这样,我就可以通过这个函数指针变量来调用所指向的函数了。

  形式1:返回类型(*函数名)(参数表) ,例子如下:

#include<stdio.h>
void (*funp)(int);  //定义一个函数指针,注意函数的返回类型和参数类型和指针的一致,才可以用。
void print(int n);  //函数申明

int  main(void)
{
  funp=print; //指针赋值
  (*funp)(10); //调用

}

void print(int n)
{
    printf("%d\n",n);
}

形式2:typedef  返回类型(*新类型)(参数表)

不要以为typedef的只能这样用:typedef A B;

#include<stdio.h>
typedef void (*funp)(int); //这里不是定义一个具体的函数指针,是定义了一个新类型
void print(int n);  //函数申明
int  main(void)
{
  funp p;
  p =print; //指针赋值
  (*p)(10); //调用

}

void print(int n)
{
    printf("%d\n",n);
}

形式3:把这个函数指针,作为参数,传入另一个函数

#include<stdio.h>
void pp1(int);
void pp2(int);
void pp3(int);
typedef void (*funp)(int); //定义一个函数指针类型
void callpp(funp p,int n); //这个函数的一个参数是函数指针

void pp1(int n)
{
    printf("pp1 print out %d\n",n);
}

void pp2(int n)
{
    printf("pp2 print out %d\n",2*n);
}

void pp3(int n)
{
    printf("pp3 print out %d\n",3*n);
}

void callpp(funp p,int n)
{
    p(n);  //这里就是函数的运行了
}
int main()
{
    callpp(pp2,5);
    callpp(pp1,5);
    callpp(pp3,5);
}

 

转载于:https://www.cnblogs.com/nasduc/p/4741839.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值