大侠帮帮忙,我想在VC++ 中实现数组的升降序排列,练习使用指向函数的指针和内存的动态分布。

来源:百度知道 编辑:UC知道 时间:2024/06/24 15:23:06
// 内存的自动分布,函数指针和排序.cpp : Defines the entry point for the console application.
//

//#include "stdafx.h"
#include"stdlib.h"
#include"iostream.h"

bool ascending(int,int);
bool descending(int,int);
void sortArray(int[],int,bool(*)(int,int));
//可用void displayArray(int[],int)实现输出功能

int main(int argc, char* argv[])
{
int *a;
int i,num;
cout<<"Please enter the number of integer!";
cin>>num;
a=new int[num];
// a=(int*)malloc(sizeof(int)*num);
if(a==NULL)
{
cout<<"Malloc problem,exit! "<<endl;
return -1;
}
for(i=0;i<num;i++)
{
cin>>a[num];
// cout<<a[num]<<endl;
}

sortArray(a,num,ascending);//指针指向函数,将函数作为另一个函数的参数进行传递
cout<<"After ascending sort:"<<endl;
for(i=0;i<num;i++)
cout<<

主要是main()函数有问题,修改如下:

int main(int argc, char* argv[])
{
int *a;
int i,num;
cout<<"Please enter the number of integer!";
cin>>num;
a=new int[num];
// a=(int*)malloc(sizeof(int)*num);
if(a==NULL)
{
cout<<"Malloc problem,exit! "<<endl;
return -1;
}
for(i=0;i<num;i++)
{
cin>>a[num];
// cout<<a[num]<<endl;
}

sortArray(a,num,ascending);//指针指向函数,将函数作为另一个函数的参数进行传递
cout<<"After ascending sort:"<<endl;
for(i=0;i<num;i++)
cout<<*(a+i)<<' '<<endl; //笔误,i在变化,所以*(a+i);

sortArray(a,num,descending);
cout<<"After descending sort:"<<endl;
for(i=0;i<num;i++)
cout<<a[i]<<' '<<endl; //笔误,i在变化,所以a[i];

// free((void *)a);
//a=NULL; //严重错误,a已经指向一个数组了,再赋值