二维数组&数组指针相关知识

  • 数组指针:
  • 数据类型 (*数组指针变量名)[列宽];
  • 特点:
  • 1、本质上是一个指针类型的变量
  • 2、指向的是一个二维数组,即数组指针的列宽等价于二维数组的列宽;
  • 例如:
c 复制代码
	int array[2][5] = {1,2,3,4,5,6,7,8,9,10};
	int (*p)[5] = array;
  • 指针数组和数组指针的区别:
  • 1、指针数组本质上是一个数组,每一个元素都是指针类型
  • 2、数组指针本质上是一个指针指向的是一个二维数组
  • 二维数组名的含义:
  • 1、array:表示二维数组的名字,数组名是一个常量,不可被修改
  • 2、array + 1:表示向后偏移二维数组的整行
  • 3、arrray[i]:表示二维数组的行对应的首地址;
  • 4、array[i] + 1:表示向后偏移一个元素的大小
  • 5、array[1][4]:表示第1行第4列的元素对应的值,等价于*(array[1] + 4)*(*(array + 1) + 4)
  • 6、&array[1][4]:表示第1行第4列的元素对应的地址,且地址为int *类型,等价于*(array + 1) + 4
  • 7、*(array + 1):二维数组名前加*降维成一维数组,表示一维数组的首地址
  • 总结:
  • 一、取二维数组每个元素的值:
c 复制代码
	二维数组名[row][col]
	*(二维数组名[row] + col)
	*(*(二维数组名+row) + col)
  • 二、取二维数组每个元素的地址:
c 复制代码
	&二维数组名[row][col]
	二维数组名[row] + col
	*(二维数组名+row) + col
  • 三、取二维数组每行的首地址:
c 复制代码
	二维数组名[row]
	*(二维数组名 + row)
  • 四、二维数组对应的每行的地址:
c 复制代码
	二维数组名 + row
  • 数组指针变量名的含义:
  • 1、数组指针变量名表示一个行地址,可以将数组指针变量名当作二维数组名使用
  • 2、可以定义一个数组指针变量指向一个二维数组,通过数组指针变量访问二维数组的每个元素;
  • 一、通过数组指针变量访问指向二维数组的每个元素的值:
c 复制代码
	数组指针变量名[row][col]
	*(数组指针变量名[row] + col)
	*(*(数组指针变量名+row) + col)
  • 二、通过数组指针变量访问指向二维数组的每个元素的地址:
c 复制代码
	&数组指针变量名[row][col]
	数组指针变量名[row] + col
	*(数组指针变量名+row) + col
  • 三、通过数组指针变量指向二维数组的每行的首地址:
c 复制代码
	数组指针变量名[row]
	*(数组指针变量名 + row)
  • 四、通过数组指针变量指向二维数组的每行的地址:
c 复制代码
	数组指针变量名 + row
  • 二维数组和数组指针的区别:
  • 相同点:
  • 1、二维数组名指针数组变量名都是一个行地址
  • 2、可以使用数组指针变量指向一个二维数组
  • 3、两者用法基本一致;
  • 不同点:
  • 1、二维数组名是一个常量,不可被修改
  • 2、数组指针变量名是一个变量,可修改数组指针的指向
  • 总结:
  • 若一个函数的参数是一个二维数组时,一般使用数组指针指向一个二维数组的方式,进行二维数组参数的传递
相关推荐
闻缺陷则喜何志丹22 分钟前
【SOSDP模板 容斥原理 逆向思考】3757. 有效子序列的数量|分数未知
c++·算法·力扣·容斥原理·sosdp·逆向思考
CoovallyAIHub25 分钟前
如何在手机上轻松识别多种鸟类?我们发现了更简单的秘密……
深度学习·算法·计算机视觉
别动哪条鱼26 分钟前
AVAudioFifo
数据结构·ffmpeg·音视频
第二只羽毛31 分钟前
遵守robots协议的友好爬虫
大数据·爬虫·python·算法·网络爬虫
艾斯比的日常1 小时前
Java 三色标记算法:并发垃圾回收的核心技术解析
java·开发语言·算法
CoovallyAIHub1 小时前
抛弃LLM!MIT用纯视觉方法破解ARC难题,性能接近人类水平
深度学习·算法·计算机视觉
程序猿编码1 小时前
PRINCE算法的密码生成器:原理与设计思路(C/C++代码实现)
c语言·网络·c++·算法·安全·prince
高洁011 小时前
具身智能-视觉语言导航(VLN)
深度学习·算法·aigc·transformer·知识图谱
Croa-vo1 小时前
TikTok 数据工程师三轮 VO 超详细面经:技术深挖 + 建模推导 + 压力测试全记录
javascript·数据结构·经验分享·算法·面试
蘑菇小白1 小时前
时间复杂度
数据结构·算法