求大神告知为什么这段代码中调用参数用的是数组b,而不直接用数组a?

[复制链接]
查看11 | 回复7 | 2021-1-27 06:45:35 | 显示全部楼层 |阅读模式
#include
usingnamespacestd;
//假设MAX为无穷大
#defineMAX1000000
intextract_min(int**a,intm,intn);
voidyoung_matrixify(int**a,inti,intj,intm,intn);
intmain()
{
inta[4][4]={2,4,9,12,3,5,14,MAX,8,16,MAX,MAX,MAX,MAX,MAX,MAX};
//打印数组a,可以看出它符合young氏矩阵的定义
for(inti=0;i -->
回复

使用道具 举报

千问 | 2021-1-27 06:45:35 | 显示全部楼层
因为原矩阵,不允许破坏,,,不过,这段代码里没看出来
回复

使用道具 举报

千问 | 2021-1-27 06:45:35 | 显示全部楼层
可能是想做一个备份,保留原来a的数据,因为函数会修改到其中数据,这个是根据你程序需要决定的,你也可以用a
回复

使用道具 举报

千问 | 2021-1-27 06:45:35 | 显示全部楼层
a是数组的数组。他可以转化为数组的指针,但不能转化为指针的指针。
回复

使用道具 举报

千问 | 2021-1-27 06:45:35 | 显示全部楼层
应该是想保留源数据以备其他地方使用吧
回复

使用道具 举报

千问 | 2021-1-27 06:45:35 | 显示全部楼层
引用3楼fefe82的回复:a是数组的数组。他可以转化为数组的指针,但不能转化为指针的指针。++
回复

使用道具 举报

千问 | 2021-1-27 06:45:35 | 显示全部楼层
不过只需要一个指针数组中转也就够了
回复

使用道具 举报

千问 | 2021-1-27 06:45:35 | 显示全部楼层
不怕原数据被破坏的话
int**b=newint*[4];
for(inti=0;i<4;i++)
b=newint[4];
for(inti=0;i<4;i++)
{
for(intj=0;j<4;j++)
b[j]=a[j];
}
......
for(inti=0;i<4;i++)
deleteb;
delete[]b;
可以改为
int*pa[4]={a[0],a[1],a[2],a[3]};
int**b=&pa;
或者
int**b=newint*[4];
for(inti=0;i<4;i++)
b=a;
....
delete[]b;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行