当前位置: 首页 > news >正文

【带头学C++】----- 三、指针章 ---- 3.7 数组指针

3.7 数组指针      

1.数组指针的概述

     数组指针是一个指向数组的指针变量,是用来保存数组元素的地址。在C/C++中,数组名代表了数组的首地址,可以被解释为一个指向数组第一个元素的指针。因此,一个指向数组的指针可以通过数组名来获得。

例如:        int arr[5]={10,20,30,40,50};

//需求定义一个指针变量 保存 数组元素的地址

int *ptr;
ptr = &arr[0];

ptr = arr;        //arr作为地址 第0个元素的地址  arr==&arr[0]

ptr = &arr[3];  //也可以保存第三个元素的地址

    可以使用数组名arr来获取数组的首地址。然后,可以声明一个指向该数组的指针变量来保存这个地址:

int *ptr = arr; // 等价于 int *ptr = &arr[0];

        在上述代码中,ptr是一个指向整型的指针变量,通过将数组名arr赋值给ptrptr指向了数组arr的首元素,即arr[0]

       通过指针操作符*和索引,我们可以访问数组的元素。例如,要访问数组的第三个元素,可以使用以下语法:

int value = *(ptr + 2); // 等价于 int value = arr[2];

       在这里,ptr + 2将指针移动了两个长度为sizeof(int)的单位,即指向了数组的第三个元素。然后,通过解引用操作符*,我们可以获取该元素的值。

2 数组元素的指针变量 和数组名(作为地址)等价

     数组指针还可以用于传递数组给函数。在函数参数中,可以将数组声明为指针或使用指针作为参数类型来接收数组。这是因为数组名会自动转换为指向数组首元素的指针。

 

 

3 在使用中 [ ] 就是*()的缩写

 为啥    arr ==&arr[0]?

&arr[0] == &*(arr+0) == arr+0 == arr

案例1: p[-1]的值是    30            p[-1] 实际是代表  *(p - 1)

int arr[5] = (10,20,30,40,50};   //*p指向的是40的位置

int *p = arr+3;

案例2: p[1]的值是    50                   p[1] 实际是代表  *(p + 1)

int arr[5] = (10,20,30,40,50};//*p指向的是40的位置

int *p = arr+3;

4 指向同一数组元素的两个

 int arr(5) = {10, 20,30,40,50};     int *p1 = arr;     int *p2 = arr+4;

 

1、两指针变量相减,等于它们间的元素个数

2、两指针变量赋值= p2=p1 它们指向同一处

3、两指针变量判断相等 == p2==p1 它们是否指向同一处

4、两指针变量判断大小   >   <   >=   <=   !=   

p1>p2    p1!=p2     判断它们的位置关系

5、两指针变量不能相加(!) p1+p2无意义

http://www.lryc.cn/news/216538.html

相关文章:

  • Ubuntu20.04安装CUDA、cuDNN、tensorflow2可行流程(症状:tensorflow2在RTX3090上运行卡住)
  • untiy打开关闭浏览器
  • 独立站优缺点解析,如何用黑科技进行缺点优化
  • 道本科技||紧跟数字化转型趋势,企业如何提高合同管理能效?
  • 框架安全-CVE 复现Apache ShiroApache Solr漏洞复现
  • 【OpenCV实现图像梯度,Canny边缘检测】
  • Spring Boot 解决跨域问题的 5种方案
  • linux 3.13版本nvme驱动阅读记录一
  • 掌握RESTful API:规范与设计详解
  • 「更新」Topaz Video AI v4.0.3中文版
  • OpenAI最新官方GPT最佳实践指南,一文讲清ChatGPT的Prompt玩法
  • 树结构及其算法-用链表来实现二叉树
  • openwrt(三):在hostapd获取已关联的STA的MAC地址
  • 为何袁世凯要把“元宵节”改为“上元节”?
  • python将图片序列保存成gif
  • UE4用C++修改蓝图对象的属性值
  • 供应商等级:一级、二级和三级供应商之间有什么区别
  • 软考 系统架构设计师系列知识点之净室软件工程(3)
  • 『VUE H5页面 - PDF预览』
  • 使用lua-resty-request库编写爬虫IP实现数据抓取
  • vue-admin-templete项目配置在手机上预览
  • 服务号升级订阅号的流程
  • redhat7.4 安装lnmp操作环境
  • Java判断是否有特殊字符串
  • 服务器搭建:从零开始创建自己的Spring Boot应用【含登录、注册功能】
  • 家用小型洗衣机哪款性价比高?公认好用四款内衣洗衣机推荐
  • Sui zkSend,创建链接可直接发送SUI,快来体验吧
  • SQL面试
  • Elasticsearch(一)---介绍
  • Vscode LinuxC++环境配置