C语言利用指针实现一个一维数组的转置
时间: 2023-07-20 21:12:18 浏览: 174
c语言 转置
假设原数组为`a`,转置后的数组为`b`,数组长度为`n`,则可以利用指针实现一维数组的转置如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
printf("请输入数组长度n: ");
scanf("%d", &n);
int* a = (int*)malloc(n * sizeof(int)); // 动态分配数组空间
int* b = (int*)malloc(n * sizeof(int)); // 动态分配数组空间
printf("请输入%d个整数: ", n);
for (int i = 0; i < n; i++) {
scanf("%d", a + i); // 使用指针操作数组元素
}
printf("原数组a为: ");
for (int i = 0; i < n; i++) {
printf("%d ", *(a + i));
}
printf("\n");
// 转置数组
for (int i = 0; i < n; i++) {
*(b + i) = *(a + n - i - 1);
}
printf("转置后数组b为: ");
for (int i = 0; i < n; i++) {
printf("%d ", *(b + i));
}
printf("\n");
free(a); // 释放数组空间
free(b); // 释放数组空间
return 0;
}
```
这里使用指针操作数组元素,`*(a + i)`等价于`a[i]`,表示数组`a`的第`i`个元素。`*(b + i) = *(a + n - i - 1)`表示将数组`a`的最后一个元素赋值给数组`b`的第一个元素,以此类推,实现数组转置。在使用完动态分配的数组空间后,需要使用`free`释放空间,避免内存泄漏。
阅读全文