c语言通过指针数组引用二维数组的元素,来实现数组的转置的代码
时间: 2024-02-13 21:06:12 浏览: 79
好的,下面是一个完整的示例代码,用于通过指针数组引用二维数组的元素,来实现数组的转置:
```
#include <stdio.h>
#define ROWS 3
#define COLS 4
void transpose(int a[][COLS], int m, int n);
int main() {
int a[ROWS][COLS] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}};
printf("Original array:\n");
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
transpose(a, ROWS, COLS);
printf("Transposed array:\n");
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
void transpose(int a[][COLS], int m, int n) {
int i, j;
int *p[COLS];
// 初始化指针数组
for (i = 0; i < n; i++) {
p[i] = a[i];
}
// 交换指针所指向的元素
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
int tmp = *(p[i] + j);
*(p[i] + j) = *(p[j] + i);
*(p[j] + i) = tmp;
}
}
}
```
在上面的代码中,我们首先定义了一个3行4列的二维数组a,用于存放原始数组。然后我们调用transpose函数,将数组a进行转置。最后,我们输出转置后的数组a。
在transpose函数中,我们首先定义了一个指针数组p,用于存放每一列的指针。然后我们使用两个循环来交换指针所指向的元素。注意,我们在交换元素时,使用了指针和解引用操作符来访问元素。
阅读全文