区分指向数组元素的指针、指向数组的指针、指针数组
区分指向数组元素的指针、指向数组的指针、指针数组
指向数组元素的指针
这类指针比较常见,例如
int a[3] = {1, 2, 3};
int *p;
p = a;//将数组的地址(也即数组首元素的地址)赋给指针p,相当于指针p指向数组的首元素
这样,我们就可以用*(p+0)
或*(p+1)
等等访问数组元素了。
同样的,这类指针也适用于二维数组,例如
int a[3][3] = {{1, 2, 3},{4, 5, 6}, {7, 8, 9}};
int *p;
p = a;
这样我们可以通过*(p+0)
访问a[0][0]
,通过*(p+3)
访问a[1][0]
等等,就相当于把二维数组看作一维数组。当然也可以适用指向数组的指针来表示,见下节。
指向数组的指针
我们首先需要搞清楚二维数组的地址表示。
假设有二维数组int a[3][3] = {{1, 2, 3},{4, 5, 6}, {7, 8, 9}};
,假设数组的起始地址为2000,则
a = 2000;
a[0] = 2000;
a[1] = 2012;
&a[0][0] = 2000;
&a[0][1] = 2004;
即数组名代表数组的首地址,也是行首地址;第一维度的数组名代表了每一行的首地址,如a[1] = 2012
;
在一维数组中有*a=a[0]
*(a+1)=a[1]
;推广到二维数组中一样适用。
即在二维数组中,同样也有*a=a[0]
*(a+1)=a[1]
,因此*(*(a+1)+1)=a[1][1]
。
我们函数中传递二维数组,可以将指向二维数组每一行的指针传入,即指针中存储的是二维数组每一行的行地址。
指向数组的指针是指向一维数组首元素的指针,即p=a[0]
和p+1=a[1]
,表明当指针指向一维数组后,每次+1增长的长度为整个一行的字节长度。
使用int (*p)[3]
来定义这类指针,括号不能去掉,后面的下标3代表指向的一维数组的长度是3,注意不是二维数组的行数。
当把这类指针传进函数后,便可通过*(*(p+i)+j)
访问二维数组中的每一个元素了。
指针数组
指针数组即一个数组内存储的均为同类型的指针。例如
int *p[4];
表示p这个数组内存的都是指向int型的指针。
区分指向数组元素的指针、指向数组的指针、指针数组相关推荐
- 数组元素替换_Linux Shell 通俗简要的讲解数组操作
Shell 数组 什么是数组?学过计算机编程语言的同学们都知道,数组的特性就是一组数据类型相同的集合 Bash Shell 数组中可以存放多个值,且只支持一维数组(不支持多维数组),初始化时不需要定义 ...
- php for循环可以变量关联数组,数组字符串变量之间的转换,数组元素的回调,for循环遍历关联数组...
实例 header("content-type:text/html;charset=utf-8"); /*数组与字符串转换*/ //1.list()用在索引数组上 list($na ...
- 在c语言中数组下标的最小值,数组元素下标的上限_c语言中,数组元素的下标下限为...
展开全部 c语言中,数组元素的下标下限为0. 数组中的各元素的存e69da5e887aa62616964757a686964616f31333431373230储是有先后顺序的,它们在内存中按照这个先 ...
- 数组元素下标的上限_c语言中,数组元素的下标下限为
展开全部 c语言中,数组元素的下标下限为0. 数组中的各元素的存e69da5e887aa62616964757a686964616f31333431373230储是有先后顺序的,它们在内存中按照这个先 ...
- c语言文本按行分配数组元素,【转】C语言中动态分配数组
int main() { int i = 0; int *a; int N; printf("Input array length: "); scanf("%d" ...
- 数组元素两两组合 php,js多个数组元素两两组合三三组合
我的思路是这样的: 先看成一个组合的问题([x]选n) 再写一个过滤器把含有有同一组元素的组合过滤掉. 这样扩展性会比较好; //合并数组 function concat(...arrs){ retu ...
- c语言数组元素下标下限1,C语言中,数组元素的下标下限为
明带哪项正确子头子透子从部进为精的A的过精过入卵.卵卵巢程即程B.受,语言中关于叙述以下与着床的受精. 纳差,数素患儿未接接种预防受过,重近3天加,温3体检:体,咳嗽热.8天因发,患者日咳有百附近. ...
- 一维数组所有元素是否大于_【C语言】- 指向一维数组元素的指针!你今天学习了吗?...
前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量.数组及其数组元素都占有存储空间,都有自己的地址,因此指针变量可以指向整个数组,也可以指向数组元素. 一.用指针指向一 ...
- 【C语言】12-指向一维数组元素的指针
本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能 ...
- 细说PHP笔记03(第7章)--数组与数据结构,数组定义,数组遍历,数组内部指针遍历,键值操作函数,统计数组函数,回调函数处理数组元素,数组排序,拆分、合并、分解、结合数组,数组实现堆栈,随机选取元素
1.数组 索引数组:索引值是整数 关联数组:索引值是字符串 2.数组的定义 1.以直接赋值的方式声明 $数组名[下标]=资料内容 或 $数组名[关联字符串(键值)]=资料内容 <?php $va ...
最新文章
- [冲昏头脑]IDEA中的maven项目中学习log4j的日志操作
- 【iCore3 双核心板_FPGA】实验二十七:基于SDRAM的TFT驱动器的设计
- C# 判断字符串是否符合十六进制,八进制,二进制和十进制整数格式的正则表达式...
- UEditor文本浏览器,引号加斜杠解决
- MySQL存储引擎和外键学习
- .NET Core开发实战(第11课:文件配置提供程序)--学习笔记
- 使用mvc时,在视图view中使用强类型视图,在web.config文件中添加命名空间namespace的引用不起作用,解决方法...
- JS-面向对象-继承
- android之调用webservice实现图片上传
- POJ1270 Following Orders(拓扑排序+回溯)
- MySQL图形化界面安装步骤
- Ubuntu Vmware虚拟机网络配置(一)
- 3DCAT云流送技术如何搅动各大行业
- 电子书PDF文件的压缩实践
- 团体项目搜查令更新一
- 【人脸识别6】用haar+adaboost训练自己的人脸检测器
- API网关,网关平台API流量统一入口
- 【CSDN软件工程师能力认证学习精选】不用框架,python实现卷积神经网络
- HOJ题目分类//放这儿没事刷刷学算法!嘻嘻!
- html调用wrl,html 的 ContentType 小结
热门文章
- linux下编译isl,CentOS 6 编译GCC 4.8.1简明流程
- 汽车电子MCU开发之路
- 论文阅读:FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks
- Linux系统InfluxDB数据和日志目录迁移教程
- mysql 8.0双主_MySQL —— 配置多主一从 ( 8.0.18 版本 )
- 这也太香了吧!阿里甩出2021最新秒杀系统设计实录!全新演绎!
- 通过FinalShell连接AWS的EC2服务器
- 企业为什么使用企业邮箱?为什么用腾讯企业邮箱?
- 通用连挖苹果工程师只为云计算
- 机器学习中VC界和VC维草稿笔记