目录:一、内存与地址
1.1、什么是内存?
1.2、什么是地址?
二、指针变量和地址
2.1、取地址操作符(&)
2.2、什么是指针变量?
2.3、拆解
2.4、解引用操作符(*)
2.4.1:什么是解引用操作符?
2.4.2 为什么要使用解引用操作符?
三、谢谢观看
只要讲指针,就离不开内存。指针是用来访问内存的。
一、内存与地址
引子:来类比一下生活中的房间,为了方便管理,我们把一栋房子分成一个一个的小房间,而为了查找房间能够快速方便,我们把房间进行编号。
1.1、什么是内存?
内存是计算机中的一个硬件单元,计算机上的CPU处理数据时,数据从CPU上读取,处理后的数据也会放在内存中。
为了方便管理,我们把内存划分成一个个的内存单元(相当于划分房间),每个内存单元为1个字节(byte)。1byte=8bit(比特位)
1.2、什么是地址?
就像为了准确找到房间,我们将房间编号,那么,我们为了方便查找内存,我们把每个内存单元设置一个地址,这样,CPU就能快速找到一个内存空间。
在生活中,我们把门牌号叫做地址;在计算机中,我们把内存单元的编号叫做地址;而在C语言中; 把地址取了个新的名字——指针。
也就是:内存单元的编号=地址=指针
二、指针变量和地址
2.1、取地址操作符(&)
#include <stdio.h>
int main()
{
int a = 10;
printf("%p",&a);//&a 取出a的地址
return 0;
}
创建了一个整型变量a,为a在内存中申请了4个字节(整型)的空间。每个空间都有其对应的地址,我们&a,取地址取出的是a所占4个字节中地址较小的字节的地址,即第一个地址。
2.2、什么是指针变量?
指针变量:用来存放地址的变量。下图中以 p 为指针变量
注:指针——是地址
指针变量——存放地址的变量
2.3、拆解
可以这样理解
整体表示:取出a的地址存放到指针变量p中
p: 是一个变量,用来存放指针
*:说明p为指针变量
int: 说明p指向的对象是int类型
变式理解:
char ch = 'w';
char* pa = &ch; // 取出ch的指针并存放在指针变量pa中,其中pa指向的对象是char类型
2.4、解引用操作符(*)
2.4.1:什么是解引用操作符?
解引用操作符:通过指针变量中存放的地址,找到其指向的空间。(通过解引用来修改变量的值)
解引用操作符起到能间接修改变量值的作用。
2.4.2 为什么要使用解引用操作符?
很多同学可能有疑问:直接修改变量a的值不就完了,为什么还要多此一举来个解引用间接修改?
正经讲法:把a的修改交给了p来操作,这样对a的修改就多了一种途径,写的代码就更加的灵活。
举个不恰当的例子:
法外狂徒张三,是一个黑社会的大哥,他想收拾一个人,但不方便亲自动手,就派手下李四来动手。最后达成了“收拾一个人”的目的,但用的途径不同。
说回这道题:
你直接对a进行修改,令a=2,就相当于张三亲自动手
用指针来令*p=2,就相当于张三不方便动手,派李四来动手
就是这么个意思。
三、谢谢观看(鞠躬.jpg)