用指针表示法将一个5*5矩阵转置(用函数实现)
时间: 2024-02-09 13:08:53 浏览: 137
好的,下面是实现矩阵转置的函数代码:
```c++
void transpose(int* matrix, int row, int col) {
// 遍历矩阵,交换对应元素的值
for (int i = 0; i < row; i++) {
for (int j = i+1; j < col; j++) {
// 交换matrix[i][j]和matrix[j][i]的值
int temp = *(matrix+i*col+j);
*(matrix+i*col+j) = *(matrix+j*col+i);
*(matrix+j*col+i) = temp;
}
}
}
```
这个函数的参数包括一个指向矩阵元素的指针`matrix`,矩阵的行数`row`和列数`col`。函数内部使用两个嵌套的循环遍历矩阵,对于每一对对称的元素,将它们的值交换。需要注意的是,矩阵转置后的行列数会互换,因此在交换元素值的时候,要注意下标的顺序。
如果要使用这个函数来转置一个5*5的矩阵,可以这样调用:
```c++
int matrix[5][5] = {{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{16,17,18,19,20},
{21,22,23,24,25}};
transpose(&matrix[0][0], 5, 5);
```
这里将二维数组`matrix`的首元素的地址作为指针参数传递给`transpose`函数。注意,在指针类型的参数中,无论是`int*`还是`int (*)[5]`,都表示指向整型数组的指针。因此,可以将二维数组看作是一个一维数组的数组,用指向数组首元素的指针来表示。
阅读全文