「这是我参与2022首次更文挑战的第15天,活动详情查看:2022首次更文挑战」。
算法的狭义定义中对不同的存储结构,要完成某一个功能所执行的操作是不一样的。 比如:
要输出数组中所有的元素的操作和
要输出链表中所有元素的操作肯定是不一样的
这说明:
算法是依附于存储结构的
不同的存储结构,所执行的算法是不一样的
算法的广义定义中无论数据是如何存储的,对该数据的操作都是一样的。
int a[10] = {......};
int * pH = a;
for(i = 0;i<10;i++)
{
printf("%d\n",*pH);
pH++;
}
位运算符
& -- 按位与
&& -- 逻辑与 也叫并且
&&与& 的含义完全不同
1&1 = 1
1&0 = 0
0&1 = 0
0&0 = 0
5&7 = 5 21&7 = 5
| -- 按位或
|| -- 逻辑或
1|1 = 1
1|0 = 1
0|1 = 1
0|0 = 0
~ -- 按位取反
~i就是把变量i的所有二进制位取反
^ -- 按位异或
相同为0
不同为1
1^0 = 1
0^1 = 1
1^1 = 0
0^0 = 0
<< -- 按位左移
i<<3表示把i的所有二进制位左移三位,右边补零
左移n位相当于乘以2的n次方
>> -- 按位右移
i>>3表示把i的所有二进制位左右移三位,左边一般补零,也可能补1.
右移n位相当于除以2的n次方
位运算的现实意义
通过位运算我们可以对数据的操作精确到每一位。
分配内存:
操作系统把某一块内存空间的使用权利分配给程序。
释放内存:
操作系统把分配给该程序的内存空间的使用权利收回,该程序就不能够再使用这一块内存空间,释放内存并非将该内存的内容清零。
变量如果不初始化,通常就会成为垃圾值。
地址是内存单元的编号 指针就是地址 指针和地址是同一个概念
指针变量是存放内存单元编号的变量 指针变量和指针是两个完全不同的概念
只不过人们通常把指针变量简称为指针
二进制全部为零的含义 --0000000的含义:
1.数值零
2.字符串结束标记符‘\0’
3.空指针NULL
NULL本质也是零,而这个零不代表数字零,而表示的是内存单元的编号零
计算机规定了以零为编号的存储单元的内容不可读,不可写