在学习图结构的时候遇到了指向矩阵的指针,刚看的时候没太懂,于是看了点资料自己整合了一下:
第一种方法:语法为
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**
来表示指向矩阵的指针需要手动进行内存管理,包括内存分配和释放。确保在不再需要矩阵时释放相应的内存,以避免内存泄漏。