指针(初级)

一、指针是什么

指针理解的2个要点:
1.指针是内存中最小单元的编号,也就是地址。
2.平时口语中说的指针,通常指的是指针变量,是用来存放地址的变量。
那么内存与地址之间的关系呢?
在这里插
入图片描述
简单来说就是一个字节大小的空间对了一个地址(指针变量)。

二、一个指针变量的大小

那么一个指针变量是多大呢? 我们可以通过下面的代码来测试。
在这里插入图片描述
由图片可知对于64位机器一个指针变量大小为8个字节,那么这是为什么呢?
其实分析地址编号就能明白。在64位机器上,地址是由64个0或1组成的二进制序列,一个二进制序列大小为1个比特位,而一个字节大小是8个比特位,所以一个指针变量的大小是8个字节。
同理对于32位机器,一个指针变量的大小是4个字节。

三、内存数据与内存地址

那么内存数据与地址是个什么样的对应关系呢?
且用一个整形变量a来举例吧。
在这里插入图片描述
在这里插入图片描述
其实我们可以看到&a得到的地址其实是01的地址即4个字节中第一个字节的地址。那么问题来了,为什么是01的地址呢?而不是00的地址,明明00才是变量a的一个字节呀。这里面涉及到大小端存储问题,后面在数据存储中我会写清楚。

四、指针和指针类型

指针的定义方式是:type + *。
举例:
char * 类型指针是为了存放char类型变量的地址。
short * 类型的指针是为了存放short类型变量的地址。

char * pc=NULL:
int * pi=NULL;
short *ps=NULL;
long * pl=NULL;
float * pf=NULL;
double * pd=NULL:

4.1指针±整数

在这里插入图片描述

通过图片代码可知,当指针类型为char* 时pc+1比pc大了1;而指针类型为int* 时pi+1比pi大了4。
总结:指针的类型决定了指针向前或向后走一步多大(距离)。

4.2指针的解引用

观察下面图片代码区别
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
简单来说指针类型决定了,对指针解引用的时候能有多大的权限(能操作几个字节)。
比如:char* 的指针解引用就只能访问一个字节,而int* 的指针的解引用就能访问四个字节。

五、指针和数组

我们可以举个例子。
在这里插入图片描述
可见数组名跟数组首元素地址是一样的。
结论:数组名表示数组首元素地址。
既然数组名是地址,那么我们可以用个指针变量来接收它,也可以通过指针来遍历数组内容。
在这里插入图片描述

六、二级指针

既然指针是变量,变量就有地址,那指针的地址存在哪呢?
在这里插入图片描述
在这里插入图片描述

七、指针数组

指针数组是指针呢?还是数组呢? 是数组,准确来说是用来存放指针的数组。
我们已知的数组有整形数组,和字符数组。

int arr1[5];
char arr2[5];

在这里插入图片描述
那指针数组是什么样呢?

int *arr[5];

在这里插入图片描述

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值