指向函数的指针的简单问题
//***************************//
// //
// 《C程序设计教程》 //
// //
// H.M.Deitel //
// P.J.Deitel 著 //
// 薛万鹏 等译 //
// //
// 机械电子出版社 //
// //
//***************************//
第227页的例子不能正常在VC6.0下运行,不知为什么?原代码如下:
//***********************************************
//227_pointerf1.cpp
//指向函数的指针
#include<stdio.h>
#define SIZE 10
void bubble(int*,const int,int(*)(int,int));
int ascending(const int,const int);
int descending(const int,const int);
main()
{
int a[SIZE]={2,6,4,8,10,12,89,68,45,37};
int counter,order;
printf("Enter 1 to sort in ascending order,\n");
printf("Enter 2 to sort in descending order:");
scanf("%d",&order);
printf("\nData items in original order\n");
for(counter=0;counter<=SIZE-1;counter++)
printf("%4d",a[counter]);
if(order==1){
bubble(a,SIZE,ascending);
printf("\nData items in ascending order\n");
}
else{
bubble(a,SIZE,descending);
printf("\nData items in descending order\n");
}
for(counter=0;counter<=SIZE-1;counter++)
printf("%4d",a[counter]);
printf("\n");
return 0;
}
void buble(int* work,const int size,int(*compare)(int,int))
{
int pass,count;
void swap(int*,int*);
for(pass=1;pass<=size-1;pass++)
for(count=0;count<=size-2;count++)
if((*compare)(work[count],work[count+1]))
swap(&work[count],&work[count+1]);
}
void swap(int*element1Ptr,int*element2Ptr)
{
int temp;
temp=*element1Ptr;
*element1Ptr=*element2Ptr;
*element2Ptr=temp;
}
int ascending(const int a,const int b)
{
return b<a;
}
int descending(const int a,const int b)
{
return b>a;
}
//***********************************************