为什么会有指针
什么是指针
指针的用法
为什么要有指针?
在要知道什么是指针的前提下,我们首先要做的就是搞懂为什么会有指针?我们需要它来为我们做些什么?
接下来我们通过一个贴近我们生活的例子来告诉大家为什么会有指针:
如上图为一栋宿舍楼,假如这个宿舍楼的每个房间都一样并且没有贴门牌号,那么李四如果要去找张三,他就只能一间一间的去找,也就是我们所说的通过遍历的方法找,这样的查找效率特别低。
但对于一栋装修好的宿舍楼来说,它的每个房间都是有房间编号的,那么张三只要告诉李四他在xx楼xx层xx号,那么李四就会找到张三。这样就会大大提高我们的查找效率!
在计算机中,内存中的一个一个小方块就相当于宿舍楼的每一件房子,而张三就在其中的一个房子中,而我们的CPU要在内存中找到张三,为了方便查找,我们就给内存中的每个字节都带上了标号,提高查找效率!
这里我们也就得出了一个结论:指针的存在就是为了提高我们的查找效率!
什么是指针?
通过上述的引用,我们也就知道了什么是指针,指针就是地址!
那么指针的大小是多少呢?
#include<stdio.h>
#include<windows.h>
int main(){
int *a = NULL;
char*b = NULL;
double*c = NULL;
printf("%d %d %d",sizeof(a),sizeof(b),sizeof(c));
system("pause");
return 0;
}
目前在32位操作平台下,指针的大小都是4个字节(在64位操作凭条下指针的大小是8个字节)。
指针VS指针变量
指针是地址。
指针变量是一个变量,它里面存放的是指针的地址。
这里的A是指针,里面存放的内容是10,而P是指针变量,里面存放的内容是A的地址。
指针的用法
取地址
int a = 10;
printf("a=%d\n", a);
printf("&a=%p\n", &a);
指针的一个用就是取地址,这里我们给a取地址,我们可以看到a的地址为009FF800。
解引用
解引用:"*"的作用是引用指针指向的变量值,引用其实就是引用该变量的地址,“解”就是把该地址对应的东西解开,解出来,就像打开一个包裹一样,那就是该变量的值了,所以称为“解引用”。也就是说,解引用是返回内存地址中对应的对象。
我们用一个图来讲解:
我们在对p进行解引用的时候,我们先访问p,“*”带上之后就是把p所指向的内容拿出来。对指针解引用,代表的是指针所指向的“目标”。
对p解引用,这里的*p就是a。
int main(){
int a = 10;
printf("a=%d\n", a);
printf("&a=%p\n", &a);
int*p = &a;
printf("p=%p\n", p);
printf("*p=%d\n", *p);
ok ,文章就先到这里了,希望这篇文章能够帮助到你对指针的认识,若有不足或者不正之处,希望谅解并欢迎批评指正!
如果本文章对你有帮助,哪怕一点点,那就请点一个赞呗,谢谢~~