指针(1)-——初步介绍

介绍

        我们知道,C语言作为如今计算机语言排名前列的语言,指针的存在是一巨大推力,想学好C语言,指针也是我们必须掌握的知识点,那么,我们要怎样来学习指针呢?这篇博客就为大家带来指针的入门知识,也是整个指针系列的第一部分,指针是什么?指针有什么作用?希望通过这篇博客,来让大家初步理解指针;

1.内存和地址

       提到指针,那就不得不先提到内存,我们买电脑的时候,电脑上内存是8GB/16GB/32GB等,那这些内存空间如何高效的管理呢?

       其实,内存也是被划为一个个内存单元的,每个内存单元的大小是1个字节,如下图:

我们在写代码时使用的每个数据都存放在内存里;

而在计算机中,每个内存单元都会被给予一个编号,计算机中我们把内存单元的编号叫做地址,而在C语言中,我们给地址取了个另外的名字,即指针;

2.地址的作用

那么,这些所谓地址,指针的东西究竟有什么用呢?我们拿一个生活中的例子来打一个简单的比方,我们将一个内存当做一幢大楼,大楼里有很多房间,如果说我们需要找到某个房间里的一个人,在没有任何消息的情况下,我们要一个个房间的寻找,既费时又费力,但是,如果说我们知道这个人所在房间的门牌号的话,我们是否就能很轻松地找到他;

因此,

这里的每一个房间就相当于我们内存中的一个个内存单元,

人相当于是内存单元中存在的数据,

门牌号就相当于是地址;

内存单元编号=地址=指针

我们通过门牌号就能精确找到一幢大楼里要找的那个人,在计算机中,CPU也能通过指针(即地址)准确找到内存中我们需要的数据;

这便是C语言中指针存在的意义以及指针的作用,我们可以通过指针来找到我们所需要的数据;

3.取地址操作符和指针变量

在了解了指针之后,我们当然要学会使用指针,这就不得不提到取地址操作符——&,&操作符的作用,即取出需要访问的变量在内存中的地址,如下,我们可以将其先直接打印出来,打印地址使用的是%p;

如果说这个地址是我们可能会用到的,那么我们就应该把它给存起来,与整型变量,字符变量类似,存放指针的变量称为指针变量,它用来存放一个数据的地址,如下图:

指针变量定义时的写法为  (类型名)*  ,如果需要存放一个整型的地址,指针变量的写法即为int*,需要存放一个字符的地址,指针变量的写法即为char……;

那么问题来了,我们知道int类型的变量大小是4个字节,char类型的变量大小是1个字节,double类型的变量大小是8个字节,那么指针变量的大小是多少个字节呢?

指针变量的大小是根据情况而定的,在32机位,X86环境下,指针变量的大小是4个字节,

而在64机位,X64环境下,指针变量的大小是8个字节;

如上图所示,该代码是在64机位下执行,不管是int*还是char*,每个内存单元的编号,即地址都是一串同等长度的16进制数字,细数起来我们会发现,一共是16个16进制数,我们知道,一个16进制数字对应4个比特位,即半个字节,16个16进制数对应的就是8个字节,所以指针变量的大小都是8个字节;如下

地址只是一串编号,64机位下任何类型的地址都是8个字节的大小;

我们也可以在X86的环境下运行一下这段代码:

这个时候指针变量的大小就变成了4个字节;

4.解引用操作符和指针变量的使用

指针的存在,其实是提供给了我们另一种方式去操作数据,

也就是说,

我们可以通过指针去操作该指针指向的内存单元中的数据,

那这就得使用到一个新的操作符“ * ”,解引用操作符,

对指针变量使用上*操作符,就能访问指针指向的内容,那么当有一个int类型的变量a,我们想要去改变他的值,就有了两种不同的方式,第一种是直接赋值改变,第二种就是使用指针间接访问去改变,如下图所示:

练习:一次简单的指针运用

在初步了解了指针之后,我们是否已经记住了这些基础的知识,下面就来练习一道题目,看看我们是否已经初步掌握:

答案会在指针(2)中给出哦

指针的基础知识就先介绍到这,希望这条博客能够帮助你们初步理解指针,后面有关指针的文章就会介绍各种类型的指针以及指针的应用;

望所有努力的人都能实现自己的目标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值