行指针的使用——((pointer + row) + col)是什么意思
用指针分别指向二维数组中的一个元素和二维数组中的一个子数组的时候,可以形象的称指向单个元素的为列指针,指向子数组的指针为行指针。
#include<stdio.h>
int main()
{
int array[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };
int(*pointer)[4], row, col;//pionter为一个行指针
pointer = array;
printf("Input row = "); scanf_s("%d", &row);
printf("Input col = "); scanf_s("%d", &col);
printf("array[% 1d][% 1d] = % d\n", row, col, *(*(pointer + row) + col));
}
定义1个3X3的二维数组,求出每行的最大值,保存至1个一维数组。要求使用行指针完成访问每个元素,求最大值的功能。
#include<iostream>
using namespace std;
int main()
{
int row_max[3], array[3][3];
int(*pa)[3] = array;
int i, j, max_val;
cout << "输入一个3*3的矩阵:" << endl;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
cin >> array[i][j];
for (i = 0; i < 3; i++)
{
max_val = *(*(pa + i)); // 第i行第0个数
for (j = 1; j < 3; j++)
{
if (*(*(pa + i) + j) > max_val)
max_val = *(*(pa + i) + j);
}
*(row_max + i) = max_val;
}
cout << "矩阵中每行最大值分别为:" << endl;
for (i = 0; i < 3; i++)
cout << row_max[i] << " ";
return 0;
}
来源:CSDN
作者:Karon_R
链接:https://blog.csdn.net/Karon_R/article/details/103481341