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

数组和指针练习(3)

题目:

int main() 

    int a[5][5]; 

    int(*p)[4]; 

    p = a;     

    printf( "%p,%d\n", &p[4][2] - &a[4][2], &p[4][2] - &a[4][2]);

    return 0; 

}

思路分析:
 

 int(*p)[4]; 

  • 定义了指针变量p是一个数组指针,且该数组指针指向的数组内具有四个元素。
  • 当进行p+1的时候,加上的就是四个元素的字节大小之和。

p = a;

  • a表示的是数组名,二维数组的数组名表示的是二维数组的第一行的地址,由于地址的特性,是处在数组元素之前的内存空间内。
  • 所以如上图所示

 

 &p[4][2] - &a[4][2];

  • 因为p是一个int类型的指针数组,指针数组的跨度是4个元素,而p[4][2] 相当于一个二维数组,取的是第四行下标为2的元素。
  • &a[4][2]取的就是a数组中第四行下标为2的元素的地址 
  •  &p[4][2] 表示的就是p+4这一个跨度中,下标为2的元素地址和&a[4][2]相减,得到的是-4。
http://www.lryc.cn/news/137526.html

相关文章:

  • 如何用树莓派Pico针对IoT编程?
  • 【填坑向】MySQL常见报错及处理系列(ERROR! The server quit without updating PID file)
  • 如何处理MySQL自增ID用完
  • Docker 安装教程【菜鸟级】
  • centos7.9 用docker安装mysql8.0
  • JVM和消息队列面经(自用)
  • 四、pikachu之文件包含
  • 【SVN内网穿透】远程访问Linux SVN服务
  • 没消费?复购难?不如试试即拼七人拼团模式
  • vscode+ros开发环境搭建
  • 10个最好的云GPU服务
  • 使用Nodejs搭建简单的HTTP服务器 - 内网穿透公网远程访问
  • Windows下搭建Tomcat HTTP服务,发布外网远程访问
  • 【Spring Boot】详解条件注解以及条件拓展注解@Conditional与@ConditionalOnXxx
  • Android 12 源码分析 —— 应用层 一(SystemUI准备篇)
  • 记录 MySQL 如何开启已有的定时任务
  • 三种生成树(STP,RSTP,MSTP)的基本配置(自我理解)
  • FRP内网穿透,配置本地电脑作为服务器
  • Linux基础指令
  • 基于GRU门控循环网络的时间序列预测matlab仿真,对比LSTM网络
  • windows上ffmpeg如何录制双屏幕中的一个屏幕上的视频
  • 使用Python搭建服务器公网展示本地电脑文件
  • Java IO流(五)Netty实战[TCP|Http|心跳检测|Websocket]
  • C#基础进阶
  • Java:ArrayList集合、LinkedList(链表)集合的底层原理及应用场景
  • 【Python】json文件的读取
  • 专用杂凑函数的消息鉴别码算法学习记录
  • Golang使用消息队列(RabbitMQ)
  • Apache Spark远程代码执行漏洞(CVE-2023-32007)漏洞复现
  • 春秋云镜 :CVE-2020-21650(MyuCMS后台rce)