前面程序已经展示过,数组名作为函数参数时,作用和指向数组首元素的指针一样
/*
*copyright(c) 2018,HH
*All rights reserved.
*作 者:HH
*完成日期:2018年7月16日
*版本号:v1.0
*
*问题描:;数组名vs数组首元素地址vs实际参数、形式参数的传递
*输入描述:;
*程序输出:
*/
#include <stdio.h>
void bubblesort(int *p,int n);
int main()
{
int i;
int d[10]={9,8,7,6,5,4,3,2,1,0};
bubblesort(d,10);//数组名==指针==首元素地址
for(i=0;i<10;i++)
{
printf("%d ",d[i]);
}
return 0;
}
void bubblesort(int *p,int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for(i=0;j<n-1-i;j++)
{
if(*(p+j)>*(p+j+1))
{
t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=t;
}
}
}
return;
}
上面的程序bubblesort函数的第二个for循环,变量名错误(应该为j),否则一致陷入死循环!!!!程序居然还能通过编译!!
正确的程序如下,调用冒泡函数bubblesort对数组排序后输出:
/*
*copyright(c) 2018,HH
*All rights reserved.
*作 者:HH
*完成日期:2018年7月16日
*版本号:v1.0
*
*问题描:;数组名vs数组首元素地址vs实际参数、形式参数的传递
*输入描述:;
*程序输出:
*/
#include <stdio.h>
void bubblesort(int *p,int n);
int main()
{
int i;
int d[10]={9,8,7,6,5,4,3,2,1,0};
bubblesort(d,10);//数组名==指针==首元素地址
for(i=0;i<10;i++)
{
printf("%d ",d[i]);
}
return 0;
}
void bubblesort(int *p,int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)//上个程序此处定义变量错误(i=0)使得程序陷入死循环,编译无问题!
{
if(*(p+j)>*(p+j+1))
{
t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=t;
}
}
}
return;
}