【简单算法效率和函数指针】

时间复杂度:语句总的执行次数关于问题规模的函数
记法O(f(n))
常见的时间复杂度:O(1),O( n),O(n^2),O(logn)
时间复杂度的推导公式、
1 常数项 化简O(1)
2 函数次数 只保留跟问题规模n相关的最高项
空间复杂度:O(1),O(n)需要额外开辟的内存空间

编译器自上而下编译
**如果函数不在主函数上方写入时,应在主函数上面进行声明;**声明的方式就是函数定义后面加分号,不要大括号。
strlen() 函数遇到标准输入\0结束。

  1. 函数指针关于函数地址字符常量强转变成函数指针地址的使用(多用于硬件方面)
    typedef int (* PFUN)(int ,int);
    typedef void( * VPF)();
    int main()
    {
    int x=10;
    printf(“x=%p \n”,&x);
    printf(“Add=&p \n”,Add);
    int ( * pfun)(int ,int)=Add;
    x=( * pfun)(12,23);
    x=( * (int( * )(int,int))0x00401005)(10,20);//0x00401005是Add函数的地址,地址强转为函数指针后,后面的括号(12,23)是调用此函数,再赋值给x
    ( * (PFUN))0x00401005)(10,20);
    printf(“x=%d \n”,x);
    return 0;
    }
  2. 函数指针作为函数的返回值
#include<stdio.h>
#include <string.h>
#include<limits.h>
typedef void(*PFUN)(void);
void (*g_pfun)(void) = NULL;//全局函数指针变量
void funa() {
	printf("funa :\n");

}
void funb()
{
	printf("funb \n");
}          
   PFUN get_pfun(PFUN p) //void(*)(void) get_pfun (void(*p)(void))这么写格式错误==> void(*get_fun(void(*p)(void)))(void)// 此函数返回类型是函数指针型
{                                   //funb的地址给P
	void(*old)(void) = g_pfun;//空指针给OLD函数指针
	g_pfun = p; //把funb函数指针给g_pfun;
	return old;//返回旧指针;
}
int main() {
	void(*p)(void) = NULL;
	p = get_pfun(funb);//p就指向OLD函数指针(空指针)


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值