c语言 arr[4][5] 二维数组旋转90度 指针输入指针输出 使用指针偏移实现
时间: 2023-11-02 20:11:38 浏览: 115
以下是使用指针偏移实现二维数组旋转90度的代码:
```c
#include <stdio.h>
void rotate(int (*arr)[5], int row, int col, int (*result)[4]) {
int i, j;
for(i = 0; i < row; i++) {
for(j = 0; j < col; j++) {
*((*(result + j)) + row - 1 - i) = *((*(arr + i)) + j);
}
}
}
int main() {
int arr[4][5] = {{1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14,15}, {16,17,18,19,20}};
int result[5][4];
int i, j;
printf("Original array:\n");
for(i = 0; i < 4; i++) {
for(j = 0; j < 5; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
printf("\nRotated array:\n");
rotate(arr, 4, 5, result);
for(i = 0; i < 5; i++) {
for(j = 0; j < 4; j++) {
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
```
在这个例子中,我们定义了一个 `rotate` 函数,该函数将输入的二维数组 arr 旋转90度并输出到指针 result 中。为了使用指针偏移实现,在函数中我们使用了两个指针 arr 和 result。首先,我们通过指针偏移访问 arr 中的元素,并将其存储在 result 中。由于 arr 的行数和列数不同于 result,我们需要在访问 result 中的元素时进行指针偏移,以确保将 arr 中的元素正确地存储在 result 中。
在 `main` 函数中,我们定义了一个原始的二维数组 arr 和一个用于存储旋转后结果的二维数组 result。我们将 arr 输出到控制台,然后调用 `rotate` 函数将其旋转,并将结果输出到控制台。
阅读全文