定义指向矩阵的指针的两种方法

在学习图结构的时候遇到了指向矩阵的指针,刚看的时候没太懂,于是看了点资料自己整合了一下:

第一种方法:语法为

int *ptr[N];

N是矩阵的列数,ptr是指向矩阵的指针,例如3行4列的矩阵:

int martrix[3][4];
int(*ptr)[4] = matrix[3][4];

意思是ptr是指向整数数组的指针,每组有4个元素,它被初始化为matrix,即指向矩阵的第一行。

进行访问的时候,ptr[i][j] 就是第i行第j列的元素。

这种方法需要注意的是:

需要注意的是,矩阵的行数通常在指针类型中不作为一部分,因为指针无法自动推断矩阵的行数。因此,指针只包含对矩阵中某一行的引用,需要手动提供矩阵的列数信息。

第二种方法语法:还是3行4列

//分配元素以储存矩阵的行指针
int** ptr = new int* [3];

//分配内存以储存矩阵的元素
for (int i = 0; i < 3; i++)
{
	ptr[i] = new int[4];
}

//释放内存
for (int i = 0; i < 3; i++)
{
	delete []ptr[i];	
}
delete[]ptr;

首先分配了一个 int* 数组来存储矩阵的行指针,然后对于每一行,再分配一个 int 数组来存储矩阵的元素。最后,可以通过指针操作来访问和修改矩阵的元素。

需要注意的是,使用 int** 来表示指向矩阵的指针需要手动进行内存管理,包括内存分配和释放。确保在不再需要矩阵时释放相应的内存,以避免内存泄漏。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值