1160: 矩阵的最大值(指针专题)与malloc 函数

26 篇文章 2 订阅
11 篇文章 0 订阅

目录

1.C语言语法错误:引发了异常: 写入访问权限冲突,XXX 是 nullptr。

 2.C 库函数 - malloc()

3.HAUT OJ1160题


1.C语言语法错误:引发了异常: 写入访问权限冲突,XXX 是 nullptr。 

 1.错误图示如上,错误描述:

在main函数中定义了*b,在自定义的函数中直接使用*b,会出现写入访问权限冲突。

原因是在main函数中没有分配*b的地址长度,*b为NULL。

2.解决方法如下

修改方法:在main函数中给*b分配地址长度:*b== (int*)malloc(number * sizeof(int))(注意free)

 2.C 库函数 - malloc()

描述

C 库函数 void *malloc(size_t size) 分配所需的内存空间,并返回一个指向它的指针。

声明

下面是 malloc() 函数的声明。

void *malloc(size_t size)

参数

  • size -- 内存块的大小,以字节为单位。

返回值

该函数返回一个指针 ,指向已分配大小的内存。如果请求失败,则返回 NULL。

(来源于菜鸟教程)

3.HAUT OJ1160题

题目描述

找出一个2×3的整数矩阵中的最大值及其行下标和列下标,要求调用函数FindMax(int p[][3], int m, int n, int *pRow, int *pCol)实现,行下标和列下标在形参中以指针的形式返回。 
void FindMax(int p[][3], int m, int n, int *pRow, int *pCol){ 
//在m*n矩阵p中查找最大值,将其行下标存入pRow所指内存单元,将其列下标存入pCol所指内存单元 

输入

输入2行3列整数,共6个。

输出

输出3个整数,矩阵中的最大值及其行下标和列下标,数据之间用空格隔开。测试数据保证最大值唯一。

输入样例 Copy

100 3 6
0 87 65

输出样例   Puts

100 0 0 

题解:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
void FindMax(int p[][3], int m, int n, int* pRow, int* pCol);
int main()
{
	int a[2][3];
	int* pRow=NULL;
	pRow=(int*)malloc(4*sizeof(int)); int* pCol = NULL;
	pCol = (int*)malloc(4 * sizeof(int));
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			scanf("%d", &a[i][j]);
		}
	}
	FindMax(a, 2, 3, pRow, pCol);
	printf(" %d %d", *pRow, *pCol);
	return 0;
}
//int* FindMax(int p[][3], int m, int n, int* pRow, int* pCol)
//{
//	
//}
void FindMax(int p[][3], int m, int n, int* pRow , int* pCol )
{
	int max = p[0][0];
	int i=0, j=0;
	
	for ( i = 0; i < 2; i++)
	{
		for ( j = 0; j < 3; j++)
		{
			if (max <=p[i][j])
			{
				max = p[i][j];
			*pRow = i;
			*pCol = j;
				 
			}
		}
	}
	printf("%d", max);
	//在m*n矩阵p中查找最大值,将其行下标存入pRow所指内存单元,将其列下标存入pCol所指内存单元 
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熟人看不到

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值