- 数组指针:
数据类型 (*数组指针变量名)[列宽];
- 特点:
- 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、
数组指针变量名
是一个变量,可修改数组指针的指向
;
- 总结:
- 若一个函数的参数是
一个二维数组
时,一般使用数组指针
指向一个二维数组
的方式,进行二维数组参数的传递
;