0
点赞
收藏
分享

微信扫一扫

Clang SA is not enabled

天蓝Sea 2023-04-29 阅读 148

学习嵌入式的C基础知识,主要包括几个核心知识点:三大语法结构常用的数据类型函数结构体指针文件操作

一、顺序结构

程序自上而下依次执行、没有分支、代码简单。

常见顺序结构有:四则运算:+,-,*(乘),/(除)以及%(求余)。

二、选择结构

if-else

switch case

三、循环结构

for循环

while循环

do-while循环

do

{

       循环体;

       条件控制语句;

}while (条件判断语句);              // 终止条件

四、常用的数据类型

一个字节为2的8次方

四、常用的函数

1 Main函数

一个C程序就是由若干头文件和函数组成,有且只有一个主函数,即main函数。

2 strcpy函数

C语言 strcpy() 函数用于对字符串进行复制(拷贝)。

头文件:string.h

语法/原型:

char* strcpy(char* strDestination, const char* strSource);



参数说明:

strDestination:目的字符串。

strSource:源字符串。

strcpy() 会把 strSource 指向的字符串复制到 strDestination。

必须保证 strDestination 足够大,能够容纳下 strSource,否则会导致溢出错误。

返回值:目的字符串,也即 strDestination。

3 malloc函数

malloc 向内存申请一块空间, 大小为 _Size, 并返回一个指向该空间的地址. 指针类型和内存大小由程序员自行定义.

4 free函数

free()函数用于释放内存, 只需向函数传递已经通过 malloc 分配空间的指针即可.

5 strlen函数

用来返回字符串长度的. 函数参数是 指向字符数组的指针

6 strcat函数

用于拼接字符串, 即将原字符串插入目标字符串的后面. 函数参数从左到右依次是 : 指向目标字符数组的指针, 指向原字符数组的指针. 返回类型是一个 char 指针*.

7 strcmp函数

比较字符串的长短或者查看两个字符串是否相等. 其原理是将字符串的字符一一比较 ascii 值大小得到的

8 预处理

五 结构体

        结构体本质上还是一种数据类型,但它可以包括若干个“成员”,每个成员的类型可以相同也可以不同,也可以是基本数据类型或者又是一个构造类型。
        结构体的优点:结构体不仅可以记录不同类型的数据,而且使得数据结构是“高内聚,低耦合”的,更利于程序的阅读理解和移植,而且结构体的存储方式可以提高CPU对内存的访问速度。

结构体变量的定义可以放在结构体的声明之后:

结构体变量的定义也可以与结构体的声明同时,这样就简化了代码:

3 访问结构成员

        虽然结构类似一个数组,只是数组元素的数据类型是相同的,而结构中元素的数据类型是可以不同的。但结构不能像数组那样使用下标去访问其中的各个元素,而应该用结构成员运算符点(.)。

 特殊的:则用 stu1.birthday.year 访问出生的年份。

4 结构体变量的初始化:结构体变量的初始化可以放在定义之后:

六 结构体数组

结构类型作为一种数据类型,也可以像基本数据类型那样,作为数组的元素的类型。

生活中经常用到结构数组来表示具有相同数据结构的一个群体,如一个班的学生的信息,一个书店或图书馆的书籍信息等。

 

 七 结构体与指针

当一个指针变量用来指向了一个结构变量,这个指针就成了结构指针变量。
结构指针变量中的值是所指向的结构变量的首地址。可以通过指针来访问结构变量。

八 结构体的嵌套

 九 结构体与函数

结构体的成员可以作为函数的参数,属于值传递(成员是数组的除外)。如:

结构变量名也可以作为函数的参数传递,如

还可以用定义的结构体指针变量来传参

        形参和实参的地址不一样,是在函数中创建了一个局部结构体,然后实参对形参进行全部成员的逐个传送,在函数中对局部结构体变量进行修改并不影响原结构体变量。这样传送的时间空间开销都比较大,特别是当成员有数组的时候,程序效率较低。所以可以考虑使用指针:

十 指针

基本格式:

基本类型 *指针变量名 = &变量名;

* 取值运算符  &取地址运算符

野指针

十一 指针与数组

一、指向数组元素的指针

 2 指针的运算

众所周知,数组,存在内存中一片地址连续的区域中
即就是说,数组,在逻辑上是一个元素挨着一个元素,在物理存储上也是一个元素挨着一个元素的。


二、指针数组(数组元素是指针

注意区分两个概念:

十二 指针与函数

1 返回值是指针的函数

指针函数:指针函数的本身是一个函数,其函数的返回值是一个指针
函数的返回值的类型既可以是整型(若没有设定,则默认为整型),实型,字符型,也可以是指针型。
返回值为指针类型的函数又称为指针类型的函数,建成指针函数。

其函数值为指针,即它带回来的值的类型为指针,当调用这个函数后,将得到一个"指向返回值为…的指针(地址)

2 函数指针

如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针。

十三 文件操作

1 文件指针

 在C语言中用一个指针变量指向一个文件,这个指针称为文件指针。

FILE是系统使用typedef定义出来的有关文件信息的一种结构体类型,结构中含有文件名、文件状态和文件当前位置等信息。

 C语言中有三个特殊的文件指针由系统默认打开,用户无需定义即可直接使用:

2 文件的打开

任何文件使用之前必须打开

filename参数

mode参数

 3 文件的关闭

任何文件在使用后应该关闭:

  1. 打开的文件会占用内存资源,如果总是打开不关闭,会消耗很多内存
  2. 一个进程同时打开的文件数是有限制的,超过最大同时打开文件数,再次调用fopen打开文件会失败
  3. 如果没有明确的调用fclose关闭打开的文件,那么程序在退出的时候,操作系统会统一关闭。

4 文件的读写

5 文件的随机读写 

 6 获取文件状态

 7 删除 重命名文件

 8 文件缓冲区

举报

相关推荐

0 条评论