1.什么是指针
2.取地址操作符
在生活中,或者在学校里,想要找到一个人,就需要知道他的家住址,如果有很多房间,你想要找到一个人,但是没有房间编号的话,你找起人来就会很麻烦,一旦有了地址或者房间编号的话,你找起人来就会很容易,在C语言中们知道计算上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数
据也会放回内存中,那我们买电脑的时候,电脑上内存是8GB/16GB/32GB等,那这些内存空间如何⾼
效的管理呢?
其实也是把内存划分为⼀个个的内存单元,每个内存单元的⼤⼩取1个字节。?
计算机中常⻅的单位(补充):
bit - ⽐特位 1字节=8比特位
byte - 字节 1kb=1024byte
KB 1MB=1024Kb
MB 1GB=1024kb
GB 1TB=1024GB
TB 1PB=1024TB
PB
其中,每个内存单元,相当于⼀个学⽣宿舍,⼀
个⼈字节空间⾥⾯能放8个⽐特位,就好⽐同学们
住的⼋⼈间,每个⼈是⼀个⽐特位。
每个内存单元也都有⼀个编号(这个编号就相当
于宿舍房间的⻔牌号),有了这个内存单元的编
号,CPU就可以快速找到⼀个内存
⽣活中我们把⻔牌号也叫地址,在计算机中我们
把内存单元的编号也称为地址。C语⾔中给地址起
了新的名字叫:指针。
所以我们可以理解为:
内存单元的编号==地址==指针
2.取地址操作符&
上面的程序显示创建一个变量,22行的代码 int *pa=&a其中&是把取地址操作符,整个语句的意思就是取出a的地址赋值给指针变量,下面,理解一下int *p的意思
*代表的是P是一个指针变量,int代表的是这个指针变量指向的内存是int的类型
如果是浮点型的话,就要用到下面的语句
double a=1.2;
diuble *pa=&a;
*代表的是pa是一个指针变量,double代表的是指向的是double变量的地址,常见的还有:
char*pa;
unsigned int*pa;
3.解引用操作符*
相当于通过地址找到里面的内容
指针变量的内存:需要用到sizeof这个操纵符,这个操作符的作用,计算变量所用的内存是字节,下面在编译器下运行看一看
这是在x86条件下运行的,可见所有的指针类型的内存大小都是相同相同·的,下面是在X64条件下运行的结果
大小都一样,那为什么要区分如此多的类型
其实和后面的关于指针的的运算有关系,下面用代码来解释一下
可见,将pa强制类型转换成为字符类的指针变量后,指针变量加一是地址只加了一个字节,原因是char只加了一个字节,这就是不同类型指针变量的意义
好了,今天的介绍到这,难得打字,你们也难得看