时间复杂度:语句总的执行次数关于问题规模的函数
记法O(f(n))
常见的时间复杂度:O(1),O( n),O(n^2),O(logn)
时间复杂度的推导公式、
1 常数项 化简O(1)
2 函数次数 只保留跟问题规模n相关的最高项
空间复杂度:O(1),O(n)需要额外开辟的内存空间
编译器自上而下编译
**如果函数不在主函数上方写入时,应在主函数上面进行声明;**声明的方式就是函数定义后面加分号,不要大括号。
strlen() 函数遇到标准输入\0结束。
- 函数指针关于函数地址字符常量强转变成函数指针地址的使用(多用于硬件方面)
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;
} - 函数指针作为函数的返回值
#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函数指针(空指针)
}