13,关键字
①auto:
int a=0;//a是局部变量,也是自动变量,即前面隐掉了auto,意为 变量自动生成,自动销毁;
②break和continue:break跳出整个循环,continue跳出当前循环,执行下一次循环
③register 寄存器:
register int a=10;//建议把a定义称寄存器变量(只是建议,并不是强制要求)
另:
计算机存储数据:(金字塔关系:从上到下,访问速度越来越慢,内存空间越来越大)
寄存器
高速缓存 -------------------------->CPU-中央处理器
内存
硬盘
因为CPU访问速度和内存的速度不匹配,所以每次访问数据时,CPU最先去寄存器拿,如果没有,再一层一层往下找,
④signed:
int 定义的变量是有符号的。正数负数都可以。其本来是signed int ,只是省略了signed,
⑤无符号 unsigned int num=0;//永远是正数
⑥struct结构体关键字
⑦typedef--类型定义 或 类型重定义
unsigned int num=0;//看着太长,改成
typedef unsigned int u_int //给这个无符号重新起个名字(超厉害的)
然后 u_int num=0;
⑧while:
⑨static:静态 当修饰局部变量时,变量生命周期会延长;
而修饰全局变量时,会改变变量的作用域,让静态的全局变量只能在自己所在的源文件中使用,出了源文件就不能使用了
为什么呢!
a++的结果累计下来了,下一次循环时,使用的是累积下来的a的值
⑩extern:声明外部符号,在其他文件声明变量。在extern所在的本文件可以使用,如
A文件:int g_val =20;
B文件:extern int g_val;
但如果A文件声明的变量前加了static 就不能这么引用了(见关键字static用法)
extern 也可外部声明函数,用法:
A文件:int ADD(int a,int b)……
B文件:extern int ADD(int,int);
而如果添加static后,也会和变量一样的结果,static改变了静态函数的作用域(不准确),其实是改变了静态函数的链接属性,变成了内部链接属性
14,define 定义常量和宏:
15,指针
PS:
在计算机中是如何产生地址的?
32位,64位指的是 地址线或数据线,通电后就有正负之分,即电信号 正电1负电0,可能性有:
00000000000000000000000000000000
00000000000000000000000000000001
……
11111111111111111111111111111111
总共2的32次方种情况,都给每个空间一个地址
如果按照这样给内存中的每个空间编号,那么内存中就有 2的32次方个内存块编号,即地址,而64位类似
如果按照一个内存空间一个bit位大小的情况来看,2的32次方个bit位会有多大空间呢?
大概0.5GB空间,
但如果按照一个字节(8个bit位)一个内存空间来看,则会有4G空间,这就是为什么电脑32位只能识别4G大小的内存的原因,因为多了就超出范围了
而int a=10;//就是在内存空间申请4个字节的空间,且是连续的4个小框框(举例),使用&取出该地址,内存中地址是16进制的,如下所示,转换二进制即为所求。
已知a的地址在那,那么如何存储这个地址呢?
指针变量:用来存放地址的
定义:int* p;
可以发现指针变量成功存储变量a的地址
而有朝一日想通过该指针找到变量a,操作其值,如何做?
*p //解引用操作符
如:
便于理解:(非常重要)
int a=10;// 在内存中创建变量a,申请一片空间,而这个空间里存放了10这个值,并且这块空间有一个地址xxxxx
int* p =&a;// 现在要把a的地址取出来并存储在p变量里,那么p变量的空间里就存放的是a的地址xxxxx(即p的值)
*p=20;// 有朝一日,p就可以通过这个地址值找到a所在的位置,并操作其值。这里就是把a的值改成了20,其实*p就是a
但连个变量的地址没变,p自己的地址没变,p的内容(也就是a所在地址)也没变,而a的地址也是不变的,只是改变了a的内容。
在内存中,变量如果使用int型,即4个字节的空间大小存储,那么存储该变量地址的指针自己的地址应该多大呢?
在32位的机器上,无非是32个比特位的二进制序列,如果用来存放地址,也是32位,等价于4个字节,而64位中,每根地址线也表示01序列的话,那么存放地址的话,也是64bit,即8个字节。
可以看一下指针变量的地址有多少位:现在系统是64位,所以8个字节(sizeof就是以字节为单位的哟)
PS:
VS可以调节系统为32位或者64位的:x64为64为机器,x86为32位机器
而系统改成32位之后,就4个字节:
16,结构体
over!