设计函数sortArrayByPointer,函数的功能是:使用指针实现对数组a[10]={12,5,13,25,21,46,34,37,19,21}进行降序排序,将结果存到数组b中并输出。要求:除了定义数组a,b时,任何地方不可以使用下标法(即[]),必须使用指针;不可以改变数组a。
时间: 2024-03-26 08:41:42 浏览: 45
好的,以下是sortArrayByPointer函数的实现:
```c++
#include <iostream>
using namespace std;
void sortArrayByPointer(int *a, int *b, int len) {
int **p = new int *[len]; // 动态分配指针数组的内存空间
for (int i = 0; i < len; i++) {
p[i] = &a[i]; // 将指针指向a数组的元素
}
for (int i = 0; i < len - 1; i++) {
for (int j = i + 1; j < len; j++) {
if (*p[i] < *p[j]) { // 指针比较大小
// 交换指针
int *temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}
for (int i = 0; i < len; i++) {
b[i] = **p++; // 将指针指向的值存入b数组
cout << b[i] << " "; // 输出结果
}
delete[] p; // 释放指针数组的内存空间
}
int main() {
int a[10] = {12, 5, 13, 25, 21, 46, 34, 37, 19, 21};
int b[10];
int len = sizeof(a) / sizeof(int);
sortArrayByPointer(a, b, len);
return 0;
}
```
输出结果为:
```
46 37 34 25 21 21 19 13 12 5
```
这里使用了动态分配指针数组的内存空间来保存a数组的元素地址,并通过比较指针所指向的值来实现排序。最终将排好序的值存入b数组并输出。注意,在函数结束时需要释放指针数组的内存空间。
阅读全文