学习C基础语言之八

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、头指针的概念:在有头结点的链表中,头指针代表的是头结点的地址;在没有头结点的链表中
头指针代表的是第一个有效节点的地址!头指针肯定是存在!


头结点和头指针的概念!













   







 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值