- 数组指针:
- 数据类型 (*数组指针变量名)[列宽];
- 特点:
- 1、本质上是一个指针类型的变量;
- 2、指向的是一个二维数组,即数组指针的列宽等价于二维数组的列宽;
- 例如:
	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):二维数组名前加*,降维成一维数组,表示一维数组的首地址;
- 总结:
- 一、取二维数组每个元素的值:
	二维数组名[row][col]*(二维数组名[row] + col)*(*(二维数组名+row) + col)
 
 
	&二维数组名[row][col]二维数组名[row] + col*(二维数组名+row) + col
 
 
	二维数组名[row]*(二维数组名 + row)
 
 
	二维数组名 + row
 
- 数组指针变量名的含义:
- 1、数组指针变量名表示一个行地址,可以将数组指针变量名当作二维数组名使用;
- 2、可以定义一个数组指针变量指向一个二维数组,通过数组指针变量访问二维数组的每个元素;
- 一、通过数组指针变量访问指向二维数组的每个元素的值:
	数组指针变量名[row][col]*(数组指针变量名[row] + col)*(*(数组指针变量名+row) + col)
 
- 二、通过数组指针变量访问指向二维数组的每个元素的地址:
	&数组指针变量名[row][col]数组指针变量名[row] + col*(数组指针变量名+row) + col
 
 
	数组指针变量名[row]*(数组指针变量名 + row)
 
 
	数组指针变量名 + row
 
- 二维数组和数组指针的区别:
- 相同点:
- 1、二维数组名和指针数组变量名都是一个行地址;
- 2、可以使用数组指针变量指向一个二维数组;
- 3、两者用法基本一致;
- 不同点:
- 1、二维数组名是一个常量,不可被修改;
- 2、数组指针变量名是一个变量,可修改数组指针的指向;
- 总结:
- 若一个函数的参数是一个二维数组时,一般使用数组指针指向一个二维数组的方式,进行二维数组参数的传递;