- 博客(15)
- 收藏
- 关注
原创 嵌入式学习第十五天
由于频繁申请和释放,导致连续的空间分散成一些小的碎片空间,当malloc超过碎片空间时,则无法获得该空间(空间不连续),将这样的空间称为内存碎片。链表是一种由指针和数据组合而成的一种存放数据的方式,优点是其中不同项数据存放不连续,节省空间。练习:要求申请堆区空间,将"hello world"存放到堆区空间,完成打印。通过调用这样的函数,再将所需的值传入形参,便可实现在链表头后插入数据。size:申请堆区空间的大小。1.free只能释放堆区空间。程序中malloc的空间没有被释放。返回获得的空间的首地址。
2024-02-01 00:45:43 327 1
原创 嵌入式学习第十四天
以定义一个结构体类型为例。char sex;int age;int score;此时我们定义了一个名为student的数据类型,在这个数据类型中包含“名字”“性别”“年龄”“成绩”,这些数据称为该数据类型的成员。“struct”是固定的格式,代表着你定义了一个结构体变量;“student”是你定义的数据类型的名字。继续以学生为例,接下来我们定义一个结构体变量。struct student s = {“张三”,‘m’,20,95};
2024-01-30 19:34:49 844 1
原创 嵌入式学习第十三天
局部变量的地址不能返回,因为局部变量会随函数作用域结束被回收,虽然能够获得返回的地址,但地址对应的空间已经被回收过了。const修饰p和*p,指针变量p的值不能改变,也不能利用*p改变直系那个空间中的值。const修饰 p,指针变量p的值不能改变,但可以利用指针变量p修改指向空间中的值。const修饰 *p,指针变量p的值可以改变,但不能利用指针修改指向空间中的值。2.函数体内想修改函数体外指针变量值的时候,要传递指针变量的地址即二级指针。指针函数:是函数,函数的返回值类型是指针类型。
2024-01-29 23:14:42 365
原创 嵌入式学习第十二天
指针数组主要用来操作字符串数组,通过将指针数组的每个元素存放字符串的首地址实现对多个字符串的操作。二维数组主要用来存储字符串数组,通过每行存储一个字符串,多行存储多个字符串所组成的数组。在昨天学习过数组指针之后,我们今天学习了指针数组、指针和二维数组的关系以及数组指针。总结:在传参时,二维数组用数组指针传参,指针数组用二级指针传参。二维数组的数组名是指向数组第一行元素的数组指针。
2024-01-29 19:41:26 374
原创 嵌入式学习第十一天
定义一个数组指针变量,占8个字节空间,指针指向了一个int类型5个元素的数组。定义一个指针数组,数组占40个字节空间,每个元素为int *型,共5个元素。对数组指针*,值不变,类型降级成为指向数组第一个元素的指针。对一维数组数组名&,值不变,类型升级为数组指针类型。&a:获得数组的首地址,其类型为int (*)[5]数组的数组名a是指向数组第一个元素的一个指针常量。在昨天对指针的初步学习后,今天我们学习了数组和指针的关系。指针数组时数组,数组每个元素都是指针类型。数组指针是指针,指针指向一个数组。
2024-01-26 20:17:35 372 1
原创 嵌入式学习第十天
正常情况下一个函数只能返回一个值,所以这里使用指针直接改变实参空间中的数据,使main函数中的MinComMul和MaxComDiv的值改变。3.指针变量:是一个变量, 变量里面存放了一个指针(地址), 称为指针变量,使用指针变量等价于使用其内部存放的指针,所以我们有时也把指针变量简称为指针。实参地址传递给形参,形参就是实参的指针,可以通过对形参取*改变实参的值。4.*p = *q //将q指向地址中的数据赋值给p指向空间的数据。1.p = &b //将p所指向的地址改为&b的地址。
2024-01-25 20:18:42 1744
原创 嵌入式学习第九天
因为硬件原因,寄存器变量的调用速度比其他变量要快,对于部分被大量调用的变量,可以考虑将其定义为寄存器变量。实参将值拷贝一份给形参,形参是实参的副本,形参的值发生改变不会影响实参。数组传递时,函数体内部形参操作的数组和实参操作的数组为同一数组。被声明外部变量可以是别的模块的全局变量,此时可以调用来在该程序中使用。2.可以将变量的作用域限定到本文件中。3.执行到超过变量作用域范围回收变量空间。1.将变量定义为静态变量。变量从空间被开辟到被回收的整个过程称为生存周期。变量作用域默认为离定义该变量最近的大括号内。
2024-01-24 19:35:41 353
原创 嵌入式学习第八天
数据类型 数组名[行数][列数];函数类型 函数名(数据类型1 形式参数1, 数据类型2 形式参数2, ...)函数体;return 返回值;函数类型:函数运行结果的类型1.函数类型如果不写,默认为int类型2.函数返回值缺省,应该写void类型3.函数类型应该与返回值的类型一致,如果不一致以函数类型为准函数名:1.由字母、数字和下划线构成,不能以数字开头2.不要与C语言关键字重名3.最好不要与C语言库函数重名4.最好见名知意(动宾形式)
2024-01-23 23:22:56 738 1
原创 嵌入式学习第七天
C语言没有字符串类型,也无法定义字符串变量,只能通过字符型数组,每个元素存放一个字符,最终存放字符串。strlen与sizeof的不同:strlen获取的是字符串的长度,sizeof获取的是字符串所占内存空间的字节数。1.strlen:获得字符串的长度(字符串开头到离开头最近的\0之 间的字符个数,不包含\0字符)今天更深入的学习了数组的知识,在整形数组的基础上,学习了字符型数组及其相应应用。行数和列数:整形常量或整形常量表达式,不能为变量或变量表达式。与整形数组相似的,字符型数组的初始化也有一定规则。
2024-01-22 22:15:41 331
原创 嵌入式学习第四天
今天是嵌入式学习的第四天,经过四天的学习,我已经可以利用所学的知识写一些简单的数值计算和数值判断。今天的学习紧接昨天的内容,学习了一些常用的函数和逻辑运算符。
2024-01-19 00:28:49 792 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人