第1个回答 推荐于2016-07-19
for(d=0;d<n;d++)
printf("%d\n", ** p);---%d是转义符这样用没见过
还有就是num[0]~~~num[3]分别指向的是a[0]~~~a[3]的地址
你sort函数里面处理num的时候好像是有问题
#include<stdio.h>
void main()
{
void sort(int * num[],int n);
int n=5;
int a[]={1,4,23,12,9};
int * num[]={&a[0],&a[1],&a[2],&a[3],&a[4]};//你的数组越界
int ** p;
p=num;
sort(num,n);
int d;
for(d=0;d<n;d++)
printf("%d\n", ** (p+d));//这里你是想显示出来排序后的数字
}
void sort(int * num[],int n)//冒泡排序,应该没错。
{
int * t;
int i,j,k;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(num[k]>num[j])//num指向的是一个指针,必须加*
k=j;
if(k!=j)
{
t=num[i];num[i]=num[k];num[k]=t;
}
}
}
试一试是不是正确的,我这里没有C编译器,没法帮你编译本回答被提问者采纳
第2个回答 2010-12-22
#include<stdio.h>
void main()
{
void sort(int *num[],int n);
int n=5;
int a[]={1,4,23,12,9};
int *num[]={&a[0],&a[1],&a[2],&a[3],&a[4]};
int ** p;
p=num;
sort(p,n);
int d;
for(d=0;d<n;d++)
printf("%d\n", **(p+d));
}
void sort(int * num[],int n)
{
int *t;
int i,j;
for(i=0; i<n-1; i++)
{
for(j=i+1;j<n;j++)
if(*num[i]>*num[j])
{
t=num[i];
num[i]=num[j];
num[j]=t;
}
}
}
第3个回答 2010-12-21
我怎么觉得你的sort函数的操作对象是地址而不是数字啊~*num[]数组里存的是地址啊!你怎么把它当成参数在做排序运算呢~!