6.10
共用体:对应的空间是同一块区域;===》这个区域有多大呢?==》以共用体里面最大数据类型
为准;
char ch[M]; //M % 4 = 0; ===》M
//M % 4 != 0 ===》(M / 4 + 1) *4;
只不过是解析方式不一样!
//造汽车,姚明和潘长江;
枚举:
#define MONDAY 1
#define TUESDAY 2
..
#define FRIDAY 5
===》枚举:一个一个地列举;
总结:
1、枚举里面是整型常量;
2、第一个枚举常量,默认为0,后面依次加1;
3、如果对于里面某个常量初始化为非0,后面的继续在此基础上加1,前面的不变;
枚举(enum)和宏定义(define)有什么区别:
1、当有大量宏定义需要定义的时候,可以用枚举来代替;
2、枚举是数据类型,宏定义不是;
3、枚举只能表示常量;
4、宏定义是在预处理阶段处理,枚举是在编译阶段处理的!
大小端:
int :byte0 byte1 byte2 byte3
A--->B:
存储领域的大小端模式:
一个字节有一个地址!存储类似int型变量的时候,会带来一个问题:
低字节放在低地址,高字节放在高地址,还是低字节放在高地址,高字节放在低地址?
低字节放在低地址,高字节放在高地址:小端模式!
低字节放在高地址,高字节放在低地址:大端模式!
怎么用程序来测试机器的大小端呢?用共用体!
位运算:& | ^ ~ << >>
1、位与:& 和逻辑与(&&)相区分! //A && B;
&将每一位进行位与操作,1 & 1 = 1 ; 0 & 0 = 0; 0 & 1 = 0;
规律:只要有0的,就是0,只有当都是1的时候,才是1;
3 & 5 = ;
3 = 0011;
& 5 = 0101;
= 0001
=1;
2、位或:| 和逻辑或(||)相区分 //A || B
1 | 1 = 1;
1 | 0 = 1;
0 | 0 = 0;
3 | 5 = ;
3 = 0011;
| 5 = 0101;
= 0111;
= 7;
3、取反:~ 和逻辑非(!)区分;
~1 = 0;
~0 = 1;
~3 = 1100;
= 12;
4、异或:^
1 ^ 0 = 1;
1 ^ 1 = 0;
0 ^ 0 = 0;
两个不一样的时候,进行或操作;两个一样的时候结果为0;
5、左移操作:<<
short
5 << 2;
5 = 000000000000 0101;
5 << 1 = 00000000000 1010 = 10; *2;
再想左移动一位:1 0100 = 20; *2
每往左移动一位,扩大2倍;
6、右移操作:>>
每往右移动一位,减少一半;
对于一个整数a,想让它的bit3位清为0,其他位保持不变;
思路:可以构造一个数(它的bit3为0,其他位是1)和a进行位与操作;
a = 1010 1010
x = 1111 0111
& = 1010 0010
///以上就是我们C语言的课程!
接下来是数据结构!
数组、链表、栈、队列、树(二叉树、四叉树、红黑树等等)、图。。。。
什么叫数据结构呢?
对庞大的数据按照一定组织方式进行管理,然后便于操作!
最简单的数据结构:定义变量;
----》稍微复杂一点的数据结构:数组;结构体
----》更复杂一点的数据结构:链表、栈、队列,树(二叉树、四叉树、红黑树等等)、图
----》大数据和云计算!
收视率怎么统计的?
统计全国每家每户,在某个一个时间点收看的是什么节目!
===》抽样调查!===》典型性和代表性!
===》大数据的统计方式来统计!===》智能电视:操作系统!---》
怎么学习这些数据结构呢?
1、从比较简单的开始学习!
2、先学笔试或者面试可以遇到的;
面向过程的语言:C
面向对象的语言:C++;
脚本语言:shell perl python;
学习的理念:先学一些基础的,然后开发的时候,需要什么知识就去学习什么知识!
而不是学完所有的知识再去开发!
《大话数据结构》;
链表:
大学校区的例子:
为了解决数组定义大小之后不能改变的缺点,所以引入了链表的改变;
===》顾名思义:用锁链(指针)连接起来的表(数据表,用结点来体现!)
===》
每一个校区:结点;
校车: 指针;
链表的操作:
新建结点(新建一个校区),首先要设计校区是什么样子;
struct node
{
int num; //数据域,保存的是有效数据;
struct node *pNext; //指针域,用来下一个结点的地址;
//因为下一个结点也是结构体,所以是结构体类型的指针!
};
Source insight:进行代码的编辑(写代码),代码工程浏览;
链表中:分为带头结点的链表和不带头结点的链表!
1、如果带头结点的链表,头结点中的数据域里面不存储有效数据,只在指针域里面存储第一个
有效结点的地址;
2、头结点是可要可不要的!===》接下来的讲解中都是针对于有头结点的!=》可以带来一些好处
避免把问题想得复杂!
3、头指针的概念:在有头结点的链表中,头指针代表的是头结点的地址;在没有头结点的链表中
头指针代表的是第一个有效节点的地址!头指针肯定是存在!
头结点和头指针的概念!