重学C++ 函数指针

来源:互联网 发布:ai做淘宝照片 编辑:程序博客网 时间:2024/06/10 01:44

//源程序来自《C++ 程序员教程》

数组名实际上就数组的第一个元素在内存中的地址。

函数名实际上也是执行这个函数的任务的代码在内存中的起始地址。

#include<iostream>using std::cout;using std::cin;using std::endl;#include<iomanip>using std::setw;//函数列表void selectionSort(int [],const int,bool (*)(int,int));void swap(int* const,int* const);//交换bool ascending(int,int);//升序bool descending(int,int);//降序int main(){const int arraySize=10;int order;int counter;int a[arraySize]={2,3,4,5,56,42,23,78,1,234};cout<<"Enter 1 to sort in ascending order,\n"<<"Enter 2 to sort in descending order:";cin>>order;for(counter=0;counter<arraySize;counter++){cout<<setw(4)<<a[counter];}if(order==1){selectionSort(a,arraySize,ascending);cout<<endl<<"ascending:\n";}else{selectionSort(a,arraySize,descending);cout<<endl<<"descending:\n";}for(counter=0;counter<arraySize;counter++){cout<<setw(4)<<a[counter];}cout<<endl;return 0;}void selectionSort(int work[],const int size,   bool (*compare)(int,int)){int smallestOrLargest;for(int i=0;i<size-1;i++){smallestOrLargest=i;for(int index=i+1;index<size;index++){if(!(*compare)(work[smallestOrLargest],work[index])){smallestOrLargest=index;}}swap(&work[smallestOrLargest],&work[i]);}}void swap(int *const element1Ptr,int *const element2Ptr){int hold=*element1Ptr;*element1Ptr=*element2Ptr;*element2Ptr=hold;}bool ascending(int a,int b){return a<b;}bool descending(int a,int b){return b<a;}


 

原创粉丝点击