行指针的使用——*(*(pointer + row) + col)是什么意思

落爺英雄遲暮 提交于 2019-12-11 01:40:29

行指针的使用——((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;
}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!