一.什么是指针?
我们知道在计算机上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中。那在我们的电脑中这些内存空间是如何高效管理的呢?
其实也是把内存划分为一个个的内存单元,每个内存单元的大小取一个字节(就像是有楼房,咱们把楼房分成多层,来给用户住)
每一个内存单元都有一个编号(就相当于楼房里的门牌号),有了这个编号,CPU就可以快速的找到某个内存空间。这个编号就相当于地址,你可以理解为在C语言中我们给这个地址取了一个新的名字叫做指针。
简单的可以理解为内存单元的编号=地址=指针
二.取地址操作符和解引用操作符
1.&操作符
我们知道,创建变量的本质就是向内存申请一块空间。比如我创建一个变量 int a=10;我们知道a在内存中肯定有一个地址,而内存中的每一个内存单元都有一个编号,那我们怎么样才能获取这个地址呢?&操作符起到的就是这样的一个作用。
在这里咱们使用取地址操作符&就成功的把a的地址取了出来了。在这里大家需要注意有一个点,我们知道int类型的变量大小是四个字节,当然一个字节占用了一个内存单元,拥有着四个内存单元,那这四个内存单元都有编号,咱们取出的是哪一个呢?事实上是四个字节的第一个地址,一定是地址较小的那个地址。
2.*操作符
大家需要先知道一个东西,叫指针变量(实际上就是存放地址的变量)。还是上面那个代码,我把&a赋值给一个变量p。刚才说了,&a是一个地址啊,这里的p是什么类型呢?答案是int *类型,我们可以把int和*分开来看。
首先是*:*的存在说明p是一个指针变量。
int:在说明p指向的对象是int类型的,就像是这里p里面的地址是a的,而a地址里面放的是一个整型10.
三.简单用代码来应用一下这两个操作符
#include<stdio.h>
int main()
{
int a = 10;
int* p = &a;
*p = 0;
printf("%d\n", a);
return 0;
}
这里大家可以想一想这里的打印出来的a值是什么?
咱们先把a的地址给了指针变量p,又使用了解引用操作符*p,把p指向的地址里面存的数给拿了出来重新赋值了0。此时的a就不是以前的a了,变成了0。
这串代码就简单的展现了一下关于指针的运用,非常简单,主要是为入门的码友简单的认识一下指针。
感谢观看,如有错误,欢迎指正。