重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#includestdio.h
成都网络公司-成都网站建设公司创新互联十多年经验成就非凡,专业从事网站设计制作、成都网站建设,成都网页设计,成都网页制作,软文平台,1元广告等。十多年来已成功提供全面的成都网站建设方案,打造行业特色的成都网站建设案例,建站热线:18980820575,我们期待您的来电!
int *d_bubblesort(int a[],int n)//数组长度为n的冒泡降序排序
{
int i,j;
int temp;
for(i=0;in;i++)
{
for(j=n-1;ji;j--)
{
if(a[j]a[j-1])
{
temp=a[j-1];
a[j-1]=a[j];
a[j]=temp;
}
}
}
return a;
}
void main()
{
int i;
int *p=NULL;
int a[10]={6,5,4,1,2,3,9,8,7,10};
int *(*fun)(int*,int);
fun=d_bubblesort;
p=fun(a,10);
for(i=0;i10;i++)
{
printf("%d\t",p[i]);
}
}
这说明你对指针和函数参数传递的理解不到位
这个程序里你想用函数F改变p,那么就要给F传递p的地址,p的类型是int*,那么它的的地址类型是int**,传递p给F:
int main()
{
void F(int **p); //int**
int *p=NULL;
F(p); //传地址
printf("%d",*p);
delete p; //释放
return 0;
}
void F(int **p) //int**
{
*p=new int;
**p=1;
}
或者用C++的引用:
int main()
{
void F(int *p); //int*
int *p=NULL;
F(p); //这里就是引用了
printf("%d",*p);
delete p; //释放
return 0;
}
void F(int *p) //int*
{
p=new int;
*p=1;
}
并不是不规范的问题,你子程序写法只能在子程序中输出正确的数据,而在主函数中无法得到交换过的x和y的值。参考程序运用指针让子程序去读写a和b的值,在子程序执行完成后,a和b的值确实得到了交换。
你的程序中子程序采用的不是指针类型参数,这样子程序无法将交换过后的值传回来。