【接上页续写】
- 如何定义函数
函数的返回值 ,,,函数的名字(函数的形象参数)
{
函数的执行体
}
- 函数定义的本质是详细描述函数之所以能够实现某个特定功能的具体方法。
- return 表达式;的含义:
终止被调函数,向主调函数返回表达式的值。
如果表达式为空,则只终止函数,不向主调函数返回任何值。
break是用来终止循环和是switch的,return是用来终止函数的。 - 函数返回值的类型也叫函数的类型,因为如果函数名前的返回值类型和函数执行体中的return 表达式;中表达式的类型不同的话,则最终函数返回值的类型 以函数名前的返回值类型为准。【例子见什么叫函数的类型】
函数的分类
有参函数和无参函数。
有返回值函数和无返回值函数。
库函数和用户自定函数。
值传递函数和地址传递函数。
普通函数和主函数(main函数)。
【一个程序必须有且只有一个主函数。】
【主函数可以调用普通函数,普通函数不能调用主函数。】
【普通函数可以互相调用。】
【主函数是程序的入口,也是程序的出口。】
注意的问题
函数调用和函数定义的顺序
如果函数调用写在了函数定义的前面,则必须加函数前置声明。
函数前置声明:
1. 告诉编译器即将可能出现的若干个字母代表的是一个函数。
2. 告诉编译器即将可能出现的若干个字母所代表的函数的形参和返回值的具体情况。
3. 函数声明是一个语句,末尾必须加分号。
4. 对库函数的声明是通过# include<库函数所在文件的名字>来实现的。
形参和实参
个数相同,位置一一对应,数据类型可以相互兼容。如何在软件开发中合理的设计函数来解决实际问题:
一个函数的功能尽量独立,单一,多学习,多模仿牛人的代码。
变量的作用域
全局变量:
在所有函数外面定义的变量叫全局变量
在全局变量使用范围:从定义位置开始到整个程序结束。
局部变量:
在一个函数内部定义的变量或者函数的形参,都统称为局部变量。
局部变量使用的范围:只能在本函数内部使用。
注意的问题:
全局变量与局部变量命名冲突的问题:
在一个函数内部如果定义的局部变量名字和全局变量的名字一样时,局部变量会屏蔽掉全局变量。
【指针专题】
结构体
为什么需要结构体
为了表示一些复杂的事物,而普通变量无法满足实际要求。
什么叫结构体
把一些基本数据类型组合在一起形成一个新的复合数据类型,这个叫结构体。方式:
struct Student
{
int age;
float score;
char sex;
}结构体变量和结构体指针变量作为函数参数传递的问题
推荐使用结构体指针变量作为函数参数来传递。
结构体变量的运算
结构体变量不能相加,相减,相乘除,但可以相互赋值。
枚举
什么是枚举
把一个事物所有可能的取值一一列举。
枚举的优缺点
代码更安全。
书写麻烦。
补码
已知十进制求二进制
求正整数的二进制 除2取余,直至商为0,余数倒数排序。负整数的二进制
先求与该负数相对应的正整数的二进制代码,如何将所有位取反,末尾加 1,不够位数时 ,左边补1 。求零的二进制
全是零。已知二进制求十进制
如果首位是0,则表示是正整数,按普通方法求。
如果首位是1,则表明是负整数,将所有位取反,末尾加1,所得数字就是该负数的绝对值。
如果全是0,则对应的十进制为0。
链表
【算法】
通俗定义:
解题的方法和步骤。
狭义定义:
对存储数据的操作。
对不同的储存结构,要完成某一个功能的操作是不一样的。
比如:要输出数组中所有元素的操作和要输出链表中所有元素的操作是不一样的。
这说明:算法是依附于存储结构的,不同的存储结构,所执行的算法不一样。
广义定义:
广义的算法也叫泛型。
无论数据是如何存储的,对该数据的操作都是一样的。
- 首节点
存放第一个有效数据的节点。 - 尾节点
存放最后一个有效数据的节点。 - 头结点
头结点的数据类型和首节点是一模一样的。
头结点是首节点前面的那个节点。
头结点不存放有效数据。
设置头结点是为了方便对链表的操作。 - 头指针
存放头结点地址的指针变量。