项目日报开发表第七天

                                     项目日报开发表
项目名称苏嵌实训——嵌入式LinuxC第七天
今日进度以及任务

1:总结今日内容

2:复习链表(单链表)

本日任务完成情况函数:

函数定义由两部分组成:函数首部和函数操作描述 

函数调用是通过表达式或语句激活并执行函数代码的过程

参数
函数的一个明显特征就是使用时带括号( ),必要的话,括号中还要包含数据或变量,称为参数(Parameter)。参数是函数需要处理的数据


返回值
既然函数可以处理数据,那就有必要将处理结果告诉我们,所以很多函数都有返回值(Return Value)。所谓返回值,就是函数的执行结果。
函数的定义格式为:
1
2
3
4
5
        返回值类型  函数名 (  形参列表 )
        {
            ....
            return  对应的返回值类型数据(常量或变量);
        }
返回值类型  如果没有,则写成void

形参列表   如果没有,则写成void

声明
C语言代码由上到下依次执行,原则上函数定义要出现在函数调用之前,否则就会报错。但在实际开发中,经常会在函数定义之前使用它们,这个时候就需要提前声明。

所谓声明,就是告诉编译器我要使用这个函数,你现在没有找到它的定义不要紧,请不要报错,稍后我会把定义补上。

函数声明的格式非常简单,相当于去掉函数定义中的函数体再加上分号;,如下所示:

返回值类型  函数名( 类型 形参, 类型 形参… );

也可以不写形参,只写数据类型:
返回值类型  函数名( 类型, 类型…);

函数声明给出了函数名、返回值类型、参数列表(参数类型)等与该函数有关的信息,称为函数原型。

函数原型的作用是告诉编译器与该函数有关的信息,让编译器知道函数的存在,以及存在的形式,即使函数暂时没有定义,编译器也知道如何使用它。

传值参数

调用函数时,实参表达式的值被复制到相应形参标识的对象中,
并按形参类型强制转换               
函数内对形参的访问、修改,都在形参的标识对象进行
函数返回时,形参对象被撤消,不影响实参的值
值传送的实参可以是常量、有确定值的变量或表达式 

函数返回值通过匿名对象传递 

内存管理:计算机中的内存是分区来管理的,程序和程序之间的内存是独立的,不能互相访问

代码区:
        代码区的代码,程序被操作系统加载(运行的时候)到内存的时候,所有的可执行代码都加载到代码区,也叫代码段,这块内存是不可以在运行期间修改的.
静态区:
        所有的 全局变量 以及被修饰符static的变量 都存储存储到静态区。

栈区:
        栈,是一种先进后出的内存结构,所有的自动变量,函数的形参都是由编译器自动放出栈中,当一个自动变量超出其作用域时,自动从栈中弹出。对于自动变量,什么时候入栈,什么时候出栈,是不需要程序控制的,由C语言编译器控制的。    


堆区:
    堆和栈一样,也是一种在程序运行过程中可以随时修改的内存区域,但没有栈那样先进后出的顺序。堆内存空间的申请和释放需要手动通过代码来完成。

    如果不及时销毁,会造成内存泄漏等情况。
关键字:

A基本类型

(1)char:声明字符型变量或函数

(2)int:声明整型变量或函数 

(3)float:声明浮点型变量或函数

(4) double:声明双精度变量或函数

B修饰类型

(5)short:声明短整型变量或函数 

(6)long:声明长整型变量或函数

(7)signed:声明有符号类型变量

(8)unsigned:声明无符号类型变量

C构造类型

(9)enum:声明枚举类型

(10)union:声明共用体(联合)数据类型

(11)struct:声明结构体变量或函数

复合数据类型:

一、结构体

1.作用:封装数据,把多种不同的数据类型放在一起

2.定义:一般放在全局,定义时不要忘记在结尾的“}”后加上“;”

3.初始化

分为静态初始化和动态初始化

在动态初始化时要注意:

①给结构体中的数组成员赋值时,不能直接将字符串赋给数组名,可以使用strcpy函数

②给结构体中的指针变量成员赋值时,要先给指针分配空间,否则它会使一个野指针

静态初始化即在定义的时候直接赋值

结构体数组的初始化:使用for循环来完成

4.结构体中的对齐方式:字对齐和半字对齐

字对齐:给每个变量先分配四个字节的空间,如果下一个数据的数据类型与之相同,就可以放在一起,如果空间不够就再开辟四个字节的空间;如果类型不相同,就直接开辟四个字节的空间

半字对齐:原理和字对齐大致相同,但是分配的空间为2个字节

内存空洞:由于字对齐和半字对齐造成的内存浪费
解决方法:在定义结构体的时候,尽量将相同类型的数据放在一起

二、共用体

1.和结构体的区别
共用体的大小是其中最长的数据类型的长度,共用体中所有的成员共用同一段内存空间,但是其也满足字对齐和半字对齐

2.使用共用体会造成数据覆盖

3.大端字节和小段字节

大端字节和小段字节是CPU的属性,与操作系统无关

小端字节:低字节存放在低地址,高字节存放在高地址
大端字节:高字节存放在低地址,低字节存放在高地址

无论大端字节还是小端字节,都是从低字节开始存放的

使用共用体来验证CPU的大小端

本日开发中出现的问题汇总软件版本有时会报错或缺失某些内容
本日未解决问题枚举变量
本日开发收获函数,内存管理,关键字
其他 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值