C语言高级应用
文章平均质量分 62
来自于朱有鹏物联网大讲堂的课堂笔记
想文艺一点的程序员
给学习留点痕迹
展开
-
C语言高级实用技巧
记录C语言的高级实用技巧原创 2023-03-07 22:15:34 · 172 阅读 · 0 评论 -
C 语言函数形参当中的 “...“ 是什么意思, va_start()、va_arg()、va_copy() 和 va_end()
C语言函数形参当中的 “..." 是什么意思呢?原创 2023-02-20 00:03:19 · 1703 阅读 · 0 评论 -
一次性看懂 C/C++ 当中的声明规则 与 const
C语言声明解读与const分辨原创 2022-09-05 23:05:59 · 481 阅读 · 0 评论 -
C语言疑惑——什么是回调函数?
回调函数的机制原创 2022-03-12 00:43:42 · 195 阅读 · 0 评论 -
函数指针、指针函数、傻傻分不清
1、函数指针:前面修饰,后面为主体。所以首先他是一个指针,指向函数。2、指针函数:首先他是一个函数,返回值是一个指针而已。首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有“函数返回值”。3、指针数组:首先他是一个数组,里面存放的都是指针。4、数组指针:首先他是一个指针,只是指向一个数组。...原创 2022-01-26 10:06:32 · 263 阅读 · 0 评论 -
简单了解状态机
1、有限状态机(1)常说的状态机是指有限状态机 FSM(Finite State Machine)。FSM 指有有限个状态(一般是一个状态变量的值)。(2)机器在接收到外部输入的信号后,会综合考虑当前自己的状态和用户输入的信息。然后机器做出一个动作,跳转到另外一个状态。(3)状态机的3个关键点:当前状态、外部输入、下一个状态。2、两种状态机Moore 型状态机相对简单,输出只与当前的状态有关(与输入信号状态无关)此时输入信号也不是完全没用,他的作用是用作 激励作用。Mealy 型状原创 2022-01-25 10:53:42 · 1961 阅读 · 0 评论 -
c语言位域
1、结构体位域的内存分布区别一下两种规则:如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字段将紧邻前一个字段存储,直到不能容纳为止。如果相邻的位域字段的类型不同,则各编译器的具体实现有差异,VC6采取不压缩方式,Dev-C++,GCC采取压缩方式;最大的数据类型为 int :所以是 4 字节对齐。如果相邻位域字段的类型相同,紧邻着前一个字段进行存储。如果相邻的位域字段的类型不同,则各编译器的具体实现有差异,VC6采取不压缩方式,Dev-C++,GCC原创 2021-10-20 16:22:35 · 183 阅读 · 0 评论 -
数组指针
数组指针:int array[] = { 10,20,30 };int(*arrp)[3] = &array;int *arrp[3];注意点:“[ ] ” 比 “ * ” 的优先级别高,如果不加括号的话,就变成了指针数组。定义数组指针的时候必须指定数组的大小。区分:首元素地址、整个数组的首地址。(以上面的数组为例)首元素地址:array = &array[1] int * 类型数组的首地址:&array int(*)[3] 类型...原创 2021-05-24 09:47:41 · 89 阅读 · 0 评论 -
C语言高级应用 -------- (6)C语言的预处理(编译链接)、函数和函数库
目录一、C语言预处理理论1、由源码到可执行程序的过程2、预处理的意义3、预处理器处理的命令(后面有详解)4、gcc当中如何只预处理不编译二、预处理器工作内容详解1、头文件包含一、C语言预处理理论1、由源码到可执行程序的过程由粗略到详细源码.c——>(编译)elf可执行程序源码.c——>(编译)目标文件.o——>(链接)elf可执行程序源码.c——>(编译)汇编文件.S——>(汇编)目标文件.o——>(链接)elf可执行程序源码.c——>(预处理)预处原创 2021-01-25 22:24:48 · 243 阅读 · 0 评论 -
C语言高级应用 -------- (3)指针和数组的深刻理解 ,函数传参
目录一、const关键字和指针1、const修饰指针的4种形式2、const修饰的变量真的不能改吗?3、const究竟应该怎么用二、深入学习数组1、数组中几个关键符号(a ,a[0] ,&a ,&a[0])的理解三、数字和指针1、以指针方式来访问数组元素四、指针与强制类型转换1、变量数据类型的含义2、指针数据类型的含义3、 指针类型的强制转换五、sizeof 运算符(本质和 + - 这样运算符一样)3、sizeof 对数组,字符串(strlen),指针的运算 ,1、对数组2、对指针3、typ原创 2020-09-21 12:41:32 · 338 阅读 · 0 评论 -
C语言高级应用 -------- (4)指针的复杂应用 typedef,函数指针,
目录一、指针数组和数组指针3、数组指针的用法:二、函数指针与 typedef1、函数指针的书写和分析方法2、typedef 关键字的用法三、函数指针的实战1、通过函数指针来调用执行函数2、结构体内嵌函数指针实现分层(回头再来理解,linux驱动架构)四、再次讨论 typedef (结尾有 ;)1、如何使用typedef2、typedef 与 struct3、typedef 和 const4、typedef的好处五、二重指针一、指针数组和数组指针前面的是形容词,后面的才是主题。1、字面意思来理解指针数组原创 2021-01-25 22:21:28 · 404 阅读 · 0 评论 -
C语言基础学习------9. 指针
指针指针全称是指针变量,其实质是C语言的一种变量。这种变量比较特殊,通常它的值会被赋值为某个变量的地址值(p = &a),然后我们可以使用*p这样的方式去间接访问p所指向的那个变量。1、为什么需要指针?指针存在的目的就是间接访问。有了指针之后,我们访问变量a不必只通过a这个变量名来访问。而可以通过p = &a; *p = xxx;这样的方式来间接访问变量a。2、两种重要运算符: & 和&:取地址符,将它加在某个变量前面,则组合后的符号代表这个变量的地址原创 2020-07-25 16:32:18 · 152 阅读 · 0 评论 -
C语言基础学习------8. 字符数组和字符串
Author: 想文艺一点的程序员自动化专业 工科男再坚持一点,再自律一点CSDN@想文艺一点的程序员来自朱老师学习笔记7、字符数组及它的两种初始化#include <stdio.h>int main(int argc, char **argv){ int i = 0; char a[] = {97, 98, 99, 100, 101}; 5 char b[] = "abcde"; 6 printf("sizeof(a) = %d, sizeo.原创 2020-07-25 08:28:31 · 314 阅读 · 0 评论 -
C语言基础学习------7、数组
Author: 想文艺一点的程序员自动化专业 工科男再坚持一点,再自律一点CSDN@想文艺一点的程序员来自朱老师学习笔记数组到目前为止,我们已经学习了C语言的基本数据类型:整形、浮点型、字符型。再往后就是复合数据类型。所谓复合数据类型,是指由简单数据类型,经过一定的数据结构封装,组成而成的新的数据类型。譬如数组、譬如结构体、譬如公用体1、为什么需要数组?数组就是数组成一个组,数就是一个特定数据类型的变量,组就是说好多数放在了一起。2、怎么定义数组?int a[4]; 数组中.原创 2020-07-25 08:18:40 · 300 阅读 · 0 评论 -
C语言基础学习------6、函数
Author: 想文艺一点的程序员自动化专业 工科男再坚持一点,再自律一点CSDN@想文艺一点的程序员来自朱老师学习笔记函数截至目前为止,已经学习的数据类型,运算符,三种程序结构,已经可以完成一些C语言程序了。但是不足之处在于写简单程序可以,写不了复杂程序。当程序简单的时候,一个人可以用一个main函数搞定功能。当程序变成的时候,超出了人的大脑承受范围,这时候逻辑不清了。这时候就需要把一个大程序分成许多小的模块来组织,于是乎出现了概念叫做函数。函数是C语言代码的基本组成部分,它是一个.原创 2020-07-24 16:43:21 · 515 阅读 · 0 评论 -
C语言基础学习------5、程序结构
Author: 想文艺一点的程序员自动化专业 工科男再坚持一点,再自律一点CSDN@想文艺一点的程序员来自朱老师学习笔记程序结构在C语言程序里,一共有三种程序结构:顺序结构、选择结构(分支结构)、循环结构顺序结构:按照实物本身特性,必须一个接着一个来完成。选择结构:到某个节点后,会根据一次判断结果来决定之后走哪一个分支。循环结构:循环结构有一个循环体,循环体是一段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执行多少次。总结:对于顺序结构来说,不需判断,因为下一句指令就.原创 2020-07-24 16:02:00 · 327 阅读 · 0 评论 -
C语言基础学习------4、C语言常用运算符
C语言常用运算符1、常见数学运算符号,跟数学中理解相同加号 +减号 -乘号 *除号 / ,相除以后的商取余符号 %,相除以后余数是几括号():括起来优先级最高,先计算2、跟数学中意义不同的运算符= 赋值运算符,与数学中的等号完全不同。赋值运算符作用是经过运算后符号左边的部分(左值,一般是一个变量),的值就等于右边部分(右值,一般是常数或变量)了。+= a = a + b; 等同于 a += b;-= a = a - b; 等同于 a -= b;*=原创 2020-07-24 09:57:38 · 269 阅读 · 0 评论 -
C语言基础学习------3.符号数和无符号数
Author: 想文艺一点的程序员自动化专业 工科男再坚持一点,再自律一点CSDN@想文艺一点的程序员符号数和无符号数这里的符号是指:正负号 (所以他们表示的范围不同)有符号数:整形:signed int(简写为 int)signed long,也写作signed long int,(简写为long)signed short,也写作signed short int(简写为short)signed(表示signed int)浮点型:signed float(简写为float)s.原创 2020-07-24 09:45:06 · 479 阅读 · 0 评论 -
C语言基础学习------2、C语言数据类型
Author: 想文艺一点的程序员自动化专业 工科男再坚持一点,再自律一点CSDN@想文艺一点的程序员C语言数据类型1、整形C语言中的整形对应数学中的整数,整形变量是用来描述一个整数值的,整形变量经过计算后也只能是整数(整型),不可能出现小数(浮点型).要求:要学会整形变量的定义,赋值,计算要学会使用printf函数打印出一些整形变量的值,作为输出和调试。C语言中整形有三种:(1)int 整形(2)short int,又叫做short,短整形(<=整形)(3)lon.原创 2020-07-24 09:37:45 · 149 阅读 · 1 评论 -
C语言基础学习------1、经典入门:hello world
1、经典入门:hello world1、概念:源文件:源文件即源代码文件,C语言源文件后缀名是.c。头文件:头文件后缀名为.h(head,头),C语言代码由源文件和头文件组成。关键字:关键字是C语言征用了的一些字,这些字在C语言中代表特殊含义,已经被C语言定义好了,轮不到我们用了。每个关键字都有自己特定的含义,我们必须搞懂每个关键字的所有含义和用法,否则就看不懂C语言程序。注释:C语言中注释以//开头,或者/* */,注释是给程序员看的,不是给机器看的。也就是说,程序员写注释给其他人看,以让人明原创 2020-07-24 08:42:40 · 262 阅读 · 1 评论