行指针
数组:a[2][3]={ {1,2,3}{4,5,6}}
- (行指针)a是整个数组的首地址 ,指向第一行,a+1指向第二行元素
- (列指针)*a指向第一行的第一个元素,*(a+1)指向第二行第一个数==>对行指针取值就成了列指针
- (指向一个元素)*(a+1)+1指向第二行第二个元素
- (取一个元素)*(*(a+1)+1)(也可写成a[1][1])表示第二行的第二个元素
- 行指针还可以这样定义int (*p)[n],此处定义的p指针,每加1,移动n个地址位(针对不同二维数组定义不同的n值)
参考代码:
//定义1个3X3的二维数组,求出每行的最大值,保存至1个一维数组。
//
//要求使用行指针完成访问每个元素,求最大值的功能。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int i, j;
int a[3][3] = { 4,9,1,3,7,8,5,2,6 }, max[3];
int(*pa)[3] = &a[0];//int (*p)[3] 指向一个大小为 3 的整型数组
//取第0行的
for (i = 0; i < 3; i++)//行
{
for (j = 0; j < 3; j++)
printf("%d ", *(*(a + i) + j)