今天是学习嵌入式的第12天

今天是学习嵌入式的第12天 C语言知识点总结1. const 常量修饰核心锁定内容禁止修改重点看*位置1. const int a;a是常量不能赋值修改 a10; 报错2. const int *p;*p不能改指向的数据只读但是p可以改指针可以指向别的变量3. int *const p;p不能改指针指向固定不变*p能改可以修改指向的数据4. const int *const p;指针本身、指向的数据全都不能修改口诀const靠近谁谁不能变2. 指针函数定义返回值是指针的函数格式类型 *函数名(形参)示例char * test(char arr[])特点函数运行结束return 一个地址指针⚠️坑不要返回局部变量地址局部变量函数结束内存释放地址失效。3. 函数指针定义存放函数地址的指针指针指向一个函数格式返回类型 (*指针名)(参数列表)示例int (*p)(int a,int b);区分口诀• int *p() → 指针函数是函数返回指针• int (*p)() → 函数指针是指针指向函数用法直接把函数名赋值给指针 p func;调用方式 p(1,2); 等价于 func(1,2)4. 函数作为参数回调函数函数指针做函数形参本质把函数指针当作另一个函数的参数写法示例void calc(int (*fun)(int,int), int x, int y){fun(x,y); //通过传进来的函数指针调用函数}调用时直接写函数名传入calc(add,3,5);作用同一个函数可以传入不同功能的子函数实现灵活切换逻辑排序自定义比较规则就是典型用法超级精简区分表格1. 指针函数它是【函数】返回指针int *fun();2. 函数指针它是【指针】存函数地址int (*fun)();3. 函数作参数利用【函数指针】把函数传递进另一个函数内部使用4. const修饰变量/指针限制读写权限防止误修改精髓总结1. 括号位置决定一切*和函数名有没有括号含义天差地别2. 函数名本身就是函数起始地址不需要加3. const修饰指针重点分清不能改指针本身还是不能改指针指向的数据