一。衡量算法的标准:
1.时间复杂度 大概程序执行的次数,而不是时间。因为程序执行的时间会因为机器配置和环境的不同而不同。
2.空间复杂度 算法执行过程大概所占用的最大内存。
3.难易程度
4.健壮性
二。数据结构的地位
数据结构是软件中最核心的课程
程序=数据的存储+数据的操作+可以被计算机执行的语言
三。指针
指针的重要性:
1.表示一些复杂的数据结构。
2.快速的传送数据。
3.使函数返回一个以上的值。
4.能否直接访问硬件。、
5.能够方便的使用数组和字符串。
6.是理解面向对象语言中引用的基础。
指针是c语言的灵魂
地址:1.地址就是内存单元的编号 2.从0开始的非负整数 3.范围:0--FFFFFFFF【0——4G-1】
指针:1.指针就是地址 地址就是指针
2.指针变量是存放内存单元地址的变量
3.指针的本质是一个操作受限的非负整数
四。内存
内存的基本概念:
1.内存是用来存储数据的设备。他的存储速度介于寄存器和硬盘之间。
2.内存是CPU唯一可以访问的大容量存储设备,所有硬盘中的程序和数据必须调入内存之后方可被CPU执行。
切记:CPU不能直接处理硬盘中的数据。
3.内存的问题是软件开发过程中最核心的问题之一。如内存的分配,内存的释放,内存什么时候分配,由谁来分配,
由谁来释放,分配在什么地方,访问权限如何。
4.内存是多字节组成的线性一维存储空间。
5.内存的基本划分单位是字节。
6.每个字节含有8位。每一位放一个放1个0或1个1.
7.字节和编号是一一对应的。每个字节都有一个唯一确定的编号,一个编号对应一个字节,这个编号也叫地址。、
8.一个系统所能管理的内存空间的大小取决于参与编号的二进制位数。
如:DOS系统20位寻址方案 可控制2*20B即1MB.
五。软件运行与内存关系(垃圾数据)
内存是在操作系统的统一管理下使用的。
1.软件的运行需要向操作系统申请存储空间,在内存空闲空间足够时,操作系统将分配一段内存空间并将外存中软件
拷贝一份存入改内存空间,并启动该软件的运行。
2.在软件运行期间,该软件所占内训空间不再分配给其他软件。
3.当软件运行完毕后,操作系统将回收该内存空间(注意:操作系统并不清空该内存空间中遗留下来的数据),以便载次
分配给其他软件使用。
综上所述:一个软件分配到的空间中极有可能存在着以前其他软件使用过的残留数据。所以通常情况下我们为一个变量、
一个数组,分配好存储空间后都要对改存储空间进行初始化。
六。指针的基本概念
int i=10;
int* p=&i;//等价于int* p; p=&i;
1.p存放了i的地址,所以我们说p指向i。
2.p和i是完全不同的两个变量,修改其中任意一个的值都不改变另一个。
3.p指向i,*p就是变量本身。更形象的说所有出现*p的地方都可以换成i,所有出现i的地方都可以换成*p.
注意:指针变量也是变量,只不过他存放的不是内存单元的内容,只能存放内存单元的地址。
普通变量前不能加*
常量和表达式前不能加&
通过被调函数修改主调函数中普通变量的值
1.实参为相关变量的地址。
2.形参为以该变量的类型为类型的指针变量。
3.在被调函数中通过 *形参变量名 的方式可以修改主函数相关变量的饿值。