定义一个3X3的整形矩阵,函数void move(int *pointer)采用指针方式实现矩阵转置。
时间: 2025-01-21 22:30:30 浏览: 54
在C语言中,我们可以定义一个3x3整型二维数组作为矩阵,并使用指针来实现矩阵转置。首先,我们需要定义一个`int`类型的3x3矩阵结构,然后编写一个名为`move`的函数,该函数接收一个指向矩阵首元素的指针。
```c
#include <stdio.h>
// 定义3x3矩阵结构
typedef struct {
int matrix[3][3];
} Matrix;
// 函数声明:接受指向矩阵首元素的指针,实现矩阵转置
void matrixTranspose(int* pointer);
int main() {
// 初始化一个3x3矩阵
Matrix original = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int* originalPointer = &original.matrix[0][0]; // 获取矩阵首元素的地址
printf("Original Matrix:\n");
printMatrix(originalPointer); // 打印原矩阵
matrixTranspose(originalPointer); // 转置矩阵
printf("\nTransposed Matrix:\n");
printMatrix(originalPointer); // 再次打印转置后的矩阵
return 0;
}
// 打印矩阵的辅助函数
void printMatrix(int* matrix) {
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
printf("%d ", matrix[i * 3 + j]);
}
printf("\n");
}
}
// 矩阵转置函数
void matrixTranspose(int* pointer) {
int temp;
for (int i = 0; i < 3; ++i) { // 遍历行
for (int j = i; j < 3; ++j) { // 遍历列,从当前行的下一个元素开始交换
temp = pointer[i * 3 + j]; // 存储需要交换的值
pointer[i * 3 + j] = pointer[j * 3 + i]; // 将值放回原始位置
pointer[j * 3 + i] = temp; // 将存储的值放到临时位置
}
}
}
```
在这个例子中,`matrixTranspose`函数通过两个嵌套循环遍历矩阵并对角线上的元素进行交换来实现转置。转置完成后,原来的`originalPointer`仍然指向转置后的矩阵。
阅读全文
相关推荐

















