前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 快速理解数组名为何是常指针

C++ 快速理解数组名为何是常指针

作者头像
好吃懒洋洋
发布2022-11-15 17:07:28
2720
发布2022-11-15 17:07:28
举报
文章被收录于专栏:个人学习分享

动态分配实例

此处使用的开发环境:visual studio 2019 下面我们通过C++中通过new来进行动态内存分配的实例带大家快速理解数组名为何是常指针

代码语言:javascript
复制
int *p=new int[n];
delete[]p;

上面,在堆中开辟n个整型内存空间,返回一个指向分配内存首地址的指针

通过数组元素的引用赋值(下标法);正常输出

在这里插入图片描述
在这里插入图片描述

下面是通过移动指针指向的整型空间对动态分配空间(可以将此处分配的n个整型内存空间理解为储存n个整型变量的数组)进行逐一赋值;循环赋值后输出该空间存储的值时,却无法正常输出

在这里插入图片描述
在这里插入图片描述

通过以下代码,说明该指针p不是像数组名一样的常指针;后文的“数组指针实例”中详细说明

在这里插入图片描述
在这里插入图片描述

此处对数组也进行上面类似的操作,发现会报错;更加说明数组名是常指针

在这里插入图片描述
在这里插入图片描述

小结:数组名本身就是一个常指针,而声明的非常指针虽然可以改变其指向的内存空间,但用下标法进行赋值、输出时可以看作是“常指针”,实际不是

数组指针实例

概念:一个指向数组的内存空间的指针,通常通过获取数组首地址(也可用数组名表示,或&数组名[0])来绑定指针与数组;另外,数组名是一个常指针,而数组指针通常是一个变量

下面输出和输入数组arr(指针p指向该数组,此时指针p即为数组指针)的元素时,通过移动指针p来进行相应操作时,无法正常输出数组元素

在这里插入图片描述
在这里插入图片描述

下面此时指针p进行了自减操作,可以正常输出,但其输出的值是反向

在这里插入图片描述
在这里插入图片描述

分析:由于数组指针是一个变量,经过循环赋值后,指针的指向超出数组(即指向数组最后一个内存空间的下一位空间);所以循环输出数组的值时需要先让指针自减,让其指向数组的最后一位,最后数组指针指向数组的首地址

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 动态分配实例
  • 数组指针实例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档