- 博客(16)
- 收藏
- 关注
原创 嵌入式学习(day15)
由于频繁申请和释放,导致连续的空间分散成一些小的碎片空间,当malloc超过碎片空间时,则无法获得该空间(空间不连续),将这样的空间称为内存碎片。3.malloc需要和free搭配使用,如果只有malloc没有free会内存泄露。练习:要求申请堆区空间,将"hello world"存放到堆区空间,完成打印。2.一个空间只能被free一次,多次free程序会崩溃。size:申请堆区空间的大小。1.free只能释放堆区空间。程序中malloc的空间没有被释放。返回获得的空间的首地址。内存溢出也称为内存越界。
2024-01-31 18:48:21
390
原创 嵌入式学习(day13)
局部变量的地址不能返回,因为局部变量会随函数作用域结束被回收,虽然能够获得返回的地址,但地址对应的空间已经被回收过了。const修饰p和*p,指针变量p的值不能改变,也不能利用*p改变直系那个空间中的值。const修饰 p,指针变量p的值不能改变,但可以利用指针变量p修改指向空间中的值。const修饰 *p,指针变量p的值可以改变,但不能利用指针修改指向空间中的值。2.函数体内想修改函数体外指针变量值的时候,要传递指针变量的地址即二级指针。-> :结构体指针类型访问成员变量使用 ->
2024-01-29 18:54:44
376
原创 嵌入式学习(day12)
指针数组主要用来操作字符串数组,通过将指针数组的每个元素存放字符串的首地址实现对多个字符串的操作。二维数组主要用来存储字符串数组,通过每行存储一个字符串,多行存储多个字符串所组成的数组。课堂内容:数组指针和指针数组,以及二维数组和指针数组传参。二维数组的数组名是指向数组第一行元素的数组指针。
2024-01-27 18:05:43
418
1
原创 嵌入式学习(day11)
定义一个数组指针变量,占8个字节空间,指针指向了一个int类型5个元素的数组。定义一个指针数组,数组占40个字节空间,每个元素为int *型,共5个元素。对数组指针*,值不变,类型降级成为指向数组第一个元素的指针。对一维数组数组名&,值不变,类型升级为数组指针类型。&a:获得数组的首地址,其类型为int (*)[5]数组的数组名a是指向数组第一个元素的一个指针常量。a 的类型可以理解为 int *指针数组是数组,数组每个元素都是指针类型。数组指针是指针,指针指向一个数组。课堂内容:数组和指针的关系。
2024-01-26 18:54:48
355
1
原创 嵌入式学习(day10)
使用指针变量等价于使用其内部存放的指针,所以我们有时也把指针变量简称为指针。实参地址传递给形参,形参就是实参的指针,可以通过对形参取*改变实参的值。3.指针变量:是一个变量, 变量里面存放了一个指针(地址), 称为指针变量,实参将值传递给形参,形参是实参的副本,形参改变不会影响实参。野指针:未经初始化的指针,指向已经被释放过空间的指针称为野指针。2.指针:指针就是地址,地址就是指针,指针多了指向的概念。空指针:NULL 0x0, 指向内存地址为0x0的指针。作为右值,直接取指针指向空间中的值。
2024-01-25 20:18:46
433
原创 嵌入式学习(day9)
实参将值拷贝一份给形参,形参是实参的副本,形参的值发生改变不会影响实参。数组传递时,函数体内部形参操作的数组和实参操作的数组为同一数组。2.可以将变量的作用域限定到本文件中。函数体内部想使用函数体外部变量值的时候使用复制传递。3.执行到超过变量作用域范围回收变量空间。变量从空间被开辟到被回收的整个过程称为生存周期。变量作用域默认为离定义该变量最近的大括号内。1.将变量定义为静态变量。1.未经初始化值为0值。2.执行到变量定义时开辟空间。声明一个变量为外部存储的变量。全局变量:变量作用域在整个文件中。
2024-01-24 19:55:14
418
原创 嵌入式学习(day7)
C语言没有字符串类型,也无法定义字符串变量,只能通过字符型数组,每个元素存放一个字符,最终存放字符串。1.strlen:获得字符串的长度(字符串开头到离开头最近的\0之 间的字符个数,不包含\0字符)行数和列数:整形常量或整形常量表达式,不能为变量或变量表达式。1.元素个数必须为常量或常量表达式,不能为变量或变量表达式。1.字符型数组可以存放字符,不一定包含\0。N维数组可以理解成是由N-1维数组构成的一维数组。练习2从终端接收一个字符串,对该字符串倒置(逆序)后,完成打印。2.字符串最末尾一定要有\0。
2024-01-22 19:17:31
297
原创 嵌入式学习(day6)
数组空间存放顺序有序,先存下标为0的元素,再存下标为1的元素, ...获得数组元素个数: sizeof(a) / sizeof(a[0])数组所占空间大小 = 数据类型所占空间大小 * 元素个数。给定一部分元素的值,没有给定初值的元素,默认初始化为0。元素个数必须为常量或常量表达式,不能是变量或变量表达式。不给定数组元素个数,通过初值元素个数决定数组元素个数。元素下标:可以用变量、常量或者表达式访问。外层循环执行一次,里层循环执行一遍。元素下标: 0 - 元素个数-1。数据类型 数组名[元素个数];
2024-01-20 19:23:08
358
原创 嵌入式学习(day5)
3.switch只与case后面的值比一次,如果相同则顺序向下执行,直到break或程序结束退出。2.do while无论表达式是否成立都会先执行一次。4.里层switch结束后如果不加break,外层switch顺序向下执行。1.do .. while后面要加;case 常量1:语句块1;case 常量2:语句块2;case 常量3:语句块3;} while (表达式);2.case后面必须为常量,不能是变量或表达式。while (表达式)else if (表达式2)else if (表达式3)
2024-01-19 19:38:28
320
1
原创 嵌入式学习(C语言基础知识)day4
3.if和else不加括号,默认控制一句代码,为了保证程序不出错,1.scanf如果输入数据与想要接收的数据不匹配,从不匹配的位置开始不再向后读取。2.gets可以接收带' '的字符串,scanf无法接收带' '的字符串。3.scanf除了%c形式外,均无法接收' '和'\n'字符。1.逻辑与左边为假值,右边不再计算。%nd n:域宽,数据不足域宽,高位用空格补齐。4.scanf中_%c可以接收非' '和'\n'字符。_%c 接收一个' '和'\n'的字符。
2024-01-18 19:16:15
863
1
原创 嵌入式学习(day1)
删除目录文件(非空) 示例:rm -rf filename。重启:Ubuntu系统中点击"Power Off”,再将虛拟关闭,再重新启动虚拟机和Ubuntu系统。编写代码filename.c指定生成文件filename。窗口:设置窗口大小,选择"查看"->"立即适应。
2024-01-15 19:56:06
392
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人