分析int(*p)[4] = a
面试题:二级指针
#include <iostream>int main()
{int a[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} };int(*p)[4] = a;//std::cout << *(p + 1) << std::endl;std::cout << (sizeof(*(p+1))) << std::endl;std::cout << (**(p + 1)) << std::endl;std::cout << (**p + 1) << std::endl;return 0;
}
结果:
16
4
1
详细分析——int (*p)[4];
这种定义方式经常与二维数组联用
解释定义
int (*p)[4]
;表示p是一个指针变量,指向一个存放4个整型元素的一维数组,且p+1(或p-1)是向前(或向后)移动数组长度个字节的大小。其中,指针变量指向一维数组的指针变量,指向二维数组中的某一行。
而第一种方式的p+1(或p-1)是向前(或向后)移动int个字节的大小。
该方式在与二维数组的联用
设有如下二维数组:
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}
};
int (*p)[4] = a;
利用指向由4(二维数组列数)个元素组成的一维数组的指针变量引用二维数组
当执行 p = a 时,内存存储情况变为:
当 p ++ 时:
即 此时p[0][0]
的值等于a[1][0]
的值为5.
注:(*(a + i) + j)等价于 *(a[i] + j) 等价于a[i][j]*。
例如:(*(a + 1) + 2) = *(a[1] + 2) = a[1][2]若:int (*p)[4];p = a;则:(*(p + 1) + 2) = *(p[1] + 2) = p[1][2]
参考:
https://blog.csdn.net/qq_41519304/article/details/105907427
分析int(*p)[4] = a相关推荐
- (46)分析 INT 0x2E 和 sysenter
一.回顾 上次课我们学习了3环进0环的两种方式,分别是中断门和快速调用,如果CPU支持快速调用,那么_KUSER_SHARED_DATA 结构体的 SystemCall 属性指向的函数是 KiFast ...
- AJPFX分析int 和integer的区别
int是java提供的8种原始数据类型之一. Java为每个原始类型提供了封装类,Integer是java为int提供的封装类. int的默认值为0,而Integer的默认值为null,即Intege ...
- java byte转int原理_java中int与byte数组互转代码详细分析
在java中,可能会遇到将int转成byte[]数组,或者将byte[]数组转成int的情况.下面我们来思考下怎么实现? 首先,分析int在java内存中的存储格式. 众所周知,int类型在内存中占4 ...
- c 初始化char**_CC++|指针详述及实例分析
指针是C语言中的精华,也是一把双刃剑,关系到安全和效率. 1 系统内存布局 2 存储变量的内存地址 3 指针定义:变量,地址,类型(宽度) 4 指针声明 5 &与*运算符 6 定义指针与解引用 ...
- 模块加载过程代码分析1
一.概述 模块是作为ELF对象文件存放在文件系统中的,并通过执行insmod程序链接到内核中.对于每个模块,系统都要分配一个包含以下数据结构的内存区. 一个module对象,表示模块名的一个以null ...
- 【Binder 机制】Native 层 Binder 机制分析 ( service_manager.c | 开启 Binder | 注册 Binder 进程上下文 | 开启 Binder 循环 )
文章目录 一.系统服务 二.系统服务主函数 三.开启 Binder 四.注册上下文 五.开启 Binder 循环 六.binder_write 方法 七.binder_ioctl 内核方法 八.bin ...
- 【网络安全】简要分析下Chrome-V8-Issue-762874
这是A guided tour through Chrome's javascript compiler上的第二个漏洞,下面是对应的commit 环境搭建 用v8-action env:PATCH_F ...
- 一个简单函数的反汇编分析
利用visual studio的反汇编功能,可以看到函数调用的汇编语言. 一个简单函数的反汇编分析 int __stdcall add(int a, int b, int c) { 00FD13C0 ...
- redis源码分析 ppt_Redis源码分析之客户端+数据库
客户端 数据结构 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 ...
最新文章
- c语言文件操作中换行,关于文件操作,碰到空格就换行
- 前台页面验证中需要注意的一个与VARCHAR2(N BYTE)和VARCHAR2(N CHAR)的小细节
- “机器换人”没什么可抱怨
- Hibernate里自定义UserType时取不到值的问题
- muduo网络库学习(二)对套接字和监听事件的封装Channel
- 去苹果浏览器默认样式
- 如何恢复右键里新建记事本
- 启航龙图计算机网络,2020年哈尔滨工业大学854计算机基础考研大纲
- 获取路径传过来的地址 截取参数
- 安装CentOS7虚拟机
- Ubuntu下TP5隐藏入口文件
- 13、Math类简介
- eclipse使用教程(图文)
- 深度 | 蚂蚁金服DASFAA论文带你深入了解GBDT模型
- 茅台抢购脚本golang版本使用教程
- CreateCompatibleDC 和 CreateCompatibleBitmap
- android 如何获得附近的wifi,Android细节:扫描获取附近wifi,并以列表形式进行展示...
- MATLAB二维图形绘制
- 魔坊APP项目-19-种植园,我的背包、道具购买
- 嵌入式软件机器编程为啥选择梯形图作为编程语言?