这个程序为什么很不稳定,有时候成功有时候执行错误
对n个整数进行排序的程序#include "stdio.h"
#define N 100
main()
{void sort(int**p,int n);
int a[N],i,*p[N],**pointer,n;
printf("请输入要对几个数进行排序:");
scanf("%d",&n);
printf("请输入要排序的数:\n");
for(i=0;i<n;i++)
p[i]=a+i;
for(i=0,pointer=p;i<n;i++,pointer++)
scanf("%d",*pointer);
pointer=p;//在进行函数处理前先让其回到初始地点//
sort(pointer,n);
}
void sort(int**p,int n)
{int i,j,*temp;
for(j=1;j<n;j++)
{for(i=0;i<n-j;i++)
if(**p>=**(p+1))
{temp=*p;*p=*(p+1);*(p+1)=temp;p++;}
p=p-(n-j);} //每比完1论让指针回归//
printf("排序后的数字顺序是:\n");
for(i=0;i<n;i++)
printf("%d ",**p++);
}
----------------解决方案--------------------------------------------------------
for(i=0,pointer=p;i<n;i++,pointer++)
scanf("%d",*pointer);
楼主没有为 pointer所代表的一块内存申请空间,所以其读写操作是可以视为非法的。。
----------------解决方案--------------------------------------------------------
int a[N],i,*p[N],**pointer,n;
这几个变量中,除了n用scanf()赋值了,其它的既没初始化,也没对其赋值,所以它们的值都是不确定的,能运行算是运气很好了!!!
----------------解决方案--------------------------------------------------------
单级间址,已经够复杂的拉!何况二级间址.
----------------解决方案--------------------------------------------------------