首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

看下面代码有什么不同,该怎么解决

2012-03-11 
看下面代码有什么不同C/C++ code//快速排序int partition(int a[],int p,int r){int x a[p]int i pi

看下面代码有什么不同

C/C++ code
//快速排序int partition(int a[],int p,int r){    int x = a[p];    int i = p;    int j = r;    while(1)    {        while (a[j] > x)            --j;        while (a[i] < x)            ++i;        if (i < j)        {            int t = a[i];            a[i] = a[j];            a[j] = t;        }        else            return j;    }}void quick(int a[],int p,int r){    if (p < r)    {        int q = partition(a,p,r);        quick(a,p,q);        quick(a,q + 1,r);    }}void quicksort(int a[]){    quick(a,0,sizeof(a)/sizeof(int) - 1);}


int a[] = {467,34,7,89,47,75,11,0};
quick(a,0,7);

quicksort(a);
有什么不同

[解决办法]
void quicksort(int a[])
{
quick(a,0,sizeof(a)/sizeof(int) - 1);
数组作为参数的时候会退化为指针, 所以这个函数相当于
void quicksort(int *a)
{
quick(a,0,sizeof(a)/sizeof(int) - 1);
所以, sizeof(a)就等于sizeof(int*),而不是想要的数组长度

热点排行