C语言专题
以嵌入式为线索的,刨析嵌入式开发中常用到的C语言高级专题
big__C
小白
展开
-
C语言高级专题(1)------- 内存与管理内存
目录程序运行为什么需要内存C语言如何操作内存C语言中用各种数据结构来管内存程序运行为什么需要内存1.计算机程序运行的目的计算机为什么需要编程?编程已经编了很多年,已经写了很多程序,为什么还需要另外写程序?计算机有这个新的程序到底为了什么?程序的目的是为了去运行,程序运行是为了得到一定的结果。计算机就是用来计算的,所有的计算机程序其实都是在做计算。计算就是在计算数据。所以计算机程序中很重...原创 2020-04-08 00:20:09 · 933 阅读 · 4 评论 -
C语言高级专题(2)------- 位操作
目录一,常用位操作符二,位与位或位异或在操作寄存器时的特殊作用三,如何用位运算构建特定二进制数四,位运算实战演练五,技术升级:用宏定义来完成位运算一,常用位操作符1、位与&(1)注意:位与符号是一个&,两个&&是逻辑与。(2)真值表:1&0=0 1&1=1 0&0=0 0&1=0 (3)从真值表可以看出:位与操作的特点是,只...原创 2020-04-09 16:06:43 · 836 阅读 · 0 评论 -
C语言高级专题(3)------- 指针
目录一,指针到底是什么二,指针带来的一些符号的理解三,野指针问题四,指针与数组的天生姻缘五,指针与强制类型转换六,指针、数组与sizeof运算符七,const关键字与指针八,指针与函数传参九,输入型参数与输出型参数一,指针到底是什么1、指针变量和普通变量的区别(1)首先必须非常明确:指针的实质就是个变量,它跟普通变量没有任何本质区别。指针完整的名字应该叫指针变量,简称为指针。代码: //...原创 2020-04-11 17:48:42 · 1001 阅读 · 0 评论 -
C语言高级专题(4)-------指针和数组的高级应用
目录一,指针数组与数组指针二,函数指针三,typedef关键字四,二重指针五,二维数组一,指针数组与数组指针1、字面意思来理解指针数组与数组指针(1)指针数组的实质是一个数组,这个数组中存储的内容全部是指针变量。(2)数组指针的实质是一个指针,这个指针指向的是一个数组。2、分析指针数组与数组指针的表达式(1) int *p[5]; int (*p)[5]; int *(p[...原创 2020-04-14 00:39:41 · 391 阅读 · 0 评论 -
C语言高级专题(5)------- 为程序分配内存
1、程序执行需要内存支持()对程序来说,内存就是程序的立足之地(程序是被放在内存中运行的);程序运行时需要内存来存储一些临时变量。2、内存管理最终是由操作系统完成的(1)内存本身在物理上是一个硬件器件,由硬件系统提供。(2)内存是由操作系统统一管理。为了内存管理方便又合理,操作系统提供了多种机制来让我们应用程序使用内存。这些机制彼此不同,各自有各自的特点,我们程序根据自己的实际情况来选择某...原创 2020-04-14 17:46:46 · 255 阅读 · 0 评论 -
C语言高级专题(6)------- 字符串 和 结构体
字符串1、C语言没有原生字符串类型(1)很多高级语言像java、C#等就有字符串类型,有个String来表示字符串,用法和int这些很像,可以String s1 = “linux”;来定义字符串类型的变量。(2)C语言没有String类型,C语言中的字符串是通过字符指针来间接实现的。2、C语言使用指针来管理字符串(1)C语言中定义字符串方法:char *p = “linux”;此时p就叫...原创 2020-04-24 22:43:31 · 1040 阅读 · 1 评论 -
C语言高级专题(7)-------预处理与函数
目录C语言预处理宏定义函数函数的本质函数的基本使用递归函数函数库字符串函数数学库函数C语言预处理1、由源码到可执行程序的过程源码.c->(预处理)->预处理过的.i源文件->(编译)->汇编文件.S->(汇编)->目标文件.o->(链接)->elf可执行程序预处理用预处理器,编译用编译器,汇编用汇编器,链接用链接器,这几个工具再加上其他一些额...原创 2020-04-18 14:53:36 · 1070 阅读 · 0 评论 -
C语言高级专题(8)------- 静态库和动态库的制作与使用
1.自己制作静态链接库并使用(1)第一步:自己制作静态链接库首先使用gcc -c只编译不连接,生成.o文件;然后使用ar工具进行打包成.a归档文件库名不能随便乱起,一般是lib+库名称,后缀名是.a表示是一个归档文件注意:制作出来了静态库之后,发布时需要发布.a文件和.h文件。(2)第二步:使用静态链接库把.a和.h都放在我引用的文件夹下,然后在.c文件中包含库的.h,然后直接使用库函...原创 2020-04-22 16:59:09 · 329 阅读 · 0 评论 -
C语言高级专题(9)------- 存储类&作用域&生命周期&链接属性
目录概念解析一,linux下C程序的内存映像二,存储类相关的关键字三,作用域详解四,变量的生命周期五,链接属性概念解析1、存储类(1)存储类就是存储类型,也就是描述C语言变量在何种地方存储。(2)内存有多种管理方法:栈、堆、数据段、bss段、.text段······一个变量的存储类属性就是描述这个变量存储在何种内存段中。(3)譬如:局部变量分配在栈上,所以它的存储类就是栈;显式初始化为非...原创 2020-04-19 01:00:47 · 228 阅读 · 0 评论 -
C语言高级专题(10)------- 共用体和枚举
目录共用体union枚举共用体union1、共用体类型的定义、变量定义和使用(1)共用体union和结构体struct在类型定义、变量定义、使用方法上很相似。(2)共用体和结构体的不同:结构体类似于一个包裹,结构体中的成员彼此是独立存在的,分布在内存的不同单元中,他们只是被打包成一个整体叫做结构体而已;共用体中的各个成员其实是一体的,彼此不独立,他们使用同一个内存单元。可以理解为:有时候是...原创 2020-04-26 16:57:39 · 368 阅读 · 0 评论 -
C语言高级专题(11)------- 常见字符串库函数
举例:字符串库函数1、什么是字符串(1)字符串就是由多个字符在内存中连续分布组成的字符结构。字符串的特点是指定了开头(字符串的指针)和结尾(结尾固定为字符’\0’),而没有指定长度(长度由开头地址和结尾地址相减得到)2、为什么要讲字符串处理函数(1)函数库为什么要包含字符串处理函数?因为字符串处理的需求是客观的,所以从很早开始人们就在写很多关于字符串处理的函数,然后逐渐形成了现在的字符串处理函数库。(2)面试笔试时,常用字符串处理函数也是经常考到的点。3、常用字符串处理函数(1)C库中字符串处原创 2020-12-03 16:54:16 · 270 阅读 · 0 评论 -
C语言高级专题(13)-------C语言中一些杂散但值得讨论的问题
目录一,操作系统究竟是个什么玩意?二,main函数返回给谁?argc、argv与main函数的传参三,void类型的本质四,C语言中的NULL五,运算中的临时匿名变量六,顺序结构七,程序调试的debug宏一,操作系统究竟是个什么玩意?1、像人类社会一样的计算机软件系统(有些人只埋头干活,有些人只做管理)(1)人类社会最开始时人人都干活,这时候没有专业分工,所有人都直接做产生价值的工作。当时是...原创 2020-04-19 23:19:22 · 436 阅读 · 0 评论