C语言学习大纲 - - 郝斌(讲解)(6)

2019-03-29 10:40

char sex; };

int main (void) { struct Student st = {80, 66.6, 'F'};//初始化 定义的同时赋初值

struct Student * pst = &st; //&st不能改成st pst->age = 88;//第二种方式 st.age = 10; //第一种方式

return 0; }

1.pst—>在计算机内部会被转换成 (*pst).age, 没有什么为什么,这就是—>的含义,这也是一种硬性规定

2.所以 pst—>age等价于(*pst).age也等价于st.age

3.我们之所以知道pst—>age等价于st.age,是因为pst—>age是被转化成了(*pst).age来执行

4.pst—>age 的含义:

pst所指向的那个结构体变量中的age这个成员

结构体变量和结构体变量指针作为函数参数传递的问题

推荐使用结构体指针变量作为函数参数来传递 结构体变量的运算

结构体变量不能相加,不能相减,也不能互相乘除 但结构体变量可以相互赋值 例子:

struct Student { int age; char sex; char name[100]; };//分号不能省

struct Student st1, st2;

st1+st2 st1*st2 st1/st2 都是错误的 st1 = st2 或者 st2 = st1 都是正确的

举例

动态构造存放学生信息的结构体数组

动态构造一个数组,存放学生的信息 然后按分数排序输出 链表:

枚举

什么是枚举

把一个事物所有可能的取值一一列举出来 怎样使用枚举

枚举的优缺点

代码更安全

书写麻烦

位运算符:

& ————按位于

&& 逻辑与 也叫并且 &&与& 的含义完全不同 1&1 = 1 1&0 = 0 0&1 = 0 0&0 = 0

5&7=5 21&7=5 5&1=1 5&10 = 0 |

|| 逻辑或 | 按位或

1|0 = 1 1|1 = 1 0|1 = 1 0|0 =0

~————按位取反

~i就是把i变量所有的二进制位取反^————按位异或

相同为零 不同为1 1^0 = 1 0^1 = 1 1^1 = 0 0^0 = 0

<<————按位左移

i<<3表示把i的所有二进制位左移3位,右边补零 左移n位相当于乘以2的n次方 面试题:

A)i = i*8 B)i = i<<3;

请问上述两个语句,哪个语句执行的速度快 答案: B快

>>————按位右移

I>>3表示把i的所有二进制位右移3位,左边一般是0,当然也可能补1

右移n位相当于除以2的n次方,前提是数据不能丢失 面试题:

A)i = i/8 B)i = i>>3;

请问上述两个语句,哪个语句执行的速度快 答案: B快

位运算的现实意义

通过位运算符我们可以对数据的操作精确到每一位

专题:

补码:

原码

也叫 符号-绝对值码

最高位0表示正 1表示负,其余二进制位是该数字的绝对值的二进制位

原吗简单易懂 加减运算复杂

存在加减乘除四种运算,增加了cpu的复杂度 零的表示不唯一 反码

反码运算不便,也没有在计算机中应用 移码

移码表示数值平移n位,n称为移码量 移码主要用于浮点数的阶码的存储 补码

已知十进制求二进制

正整数转二进制

除2取余,直至商为零,余数倒序排序

负整数转二进制

先求与该负数线对应的正整数的补码,然后将所有位取反,末尾加1, 不够位数时,左边补1

零转二进制

全是零

已知二进制求十进制

如果首位是0,则表明是正整数,按普通方法来求

如果首位是1,则表明是负整数

将所有位取反,末尾加1,所得数字就是该负数的绝对值

如果全是零,则对应的十进制数字就是零

学习目标:

在VC++6.0中一个int类型的变量所能存储的数字的范围是多少

int类型变量所能存储的最大正数十六进制是:7FFFFFFF

int类型变量所能存储的绝对值最大的负整数用十六进制表示是:80000000

具体可以参见“8位二进制所代表的十进制 示意图.jpg” 最小负数的二进制代码是多少 最大正数的二进制代码是多少

已知一个整数的二进制代码求出原始的数字 数字超过最大正数会怎样 不同类型数据的相互转化

进制的转化 字符串的处理 链表

算法:

通俗定义:

解题的方法和步骤 狭义定义:

对存储数据的操作

对不同的存储结果,要完成某一个功能所执行的操作是不一样的

比如:

要输出数组中所有的元素的操作和

要输出链表中所有元素的操作肯定是不一样的 这说明:

算法是依附于存储结构的

不同的存储结构,所执行的算法是不一样的

广义定义:

广义的算法也叫泛型

无论数据是如何存储的,对数据的操作都是一样的

我们至少可以通过两种结构来存储数据

数组

优点:

存取速度快 缺点:

需要一个连续的很大是内存 插入和删除元素的效率很低

链表

专业术语:

头结点

头结点的数据类型和首结点的类型一模一样 头结点是首结点前面的那个结点 头结点并不存放有效数据

设置头结点的目的是为了方便对链表的操作 头指针

存放头结点地址的指针变量 首节点

存放第一个有效数据的结点 尾节点

存放最后一个有效数据的结点

确定一个链表需要一个参数

头指针

优点:

插入删除元素效率高

不需要一个连续的很大的内存 缺点:

查找某个位置的元素效率低

二进制全部为零的含义 - -0000000000000的含义

1. 数值零

2. 字符串结束标记符'\\0' 3. 空指针NULL

NULL表示的是零,而这个零不代表数字零,而表示的是内存单元的标号

我们计算机规定了,以零为编号的存储单元的内容不可读,不可写


C语言学习大纲 - - 郝斌(讲解)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:加氢开工方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: