并不是不规范的问题,你子程序写法只能在子程序中输出正确的数据,而在主函数中无法得到交换过的x和y的值。参考程序运用指针让子程序去读写a和b的值,在子程序执行完成后,a和b的值确实得到了交换。
成都创新互联服务项目包括玉山网站建设、玉山网站制作、玉山网页制作以及玉山网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,玉山网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到玉山省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
你的程序中子程序采用的不是指针类型参数,这样子程序无法将交换过后的值传回来。
1、首先打开vs2014,新建一个项目。
2、添加头文件。
3、添加main主函数。
4、定义一个函数addTwoNumbers。
5、将addTwoNumbers函数地址赋值给ptr_sum。
6、调用函数指针求和。
7、运行程序,看看结果。
注意事项:
因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。
#includestdio.h
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]);
}
}