编写一个函数,实现对一个二维数组的行列互换,使用指针作为函数参数
时间: 2024-03-11 18:51:02 浏览: 94
二维数组的行列互换(函数调用实现)
4星 · 用户满意度95%
好的,下面是实现对一个二维数组的行列互换的函数,并使用指针作为函数参数:
```c
void transpose(int *arr, int m, int n) {
int temp[n][m];
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
temp[j][i] = *(arr + i * n + j);
}
}
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
*(arr + i * m + j) = temp[i][j];
}
}
}
```
这里使用了一个临时数组temp来保存转置后的结果,首先通过两个for循环将原数组的元素复制到temp数组中,然后再通过两个for循环将temp数组中的元素复制回原数组中,实现行列互换。
在使用这个函数时,需要将二维数组转换成一维数组,并将其地址作为参数传递给函数,例如:
```c
int arr[3][4] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}};
int m = 3;
int n = 4;
transpose(&arr[0][0], m, n);
```
这里将二维数组arr的首元素的地址(即arr[0][0])作为参数传递给了transpose函数,同时还需要传递数组的行数m和列数n。
希望这个例子能够帮助您更好地理解指针和二维数组的操作。
阅读全文