C语言 关于指针变量做函数参数的一个问题

本人初学C语言。题目是,输入n个正整数,然后从小到大输出。我想问的是为什么第一个程序无法排序。#include<stdio.h>voidbubble(inta[],int... 本人初学C语言。题目是,输入n个正整数,然后从小到大输出。我想问的是为什么第一个程序无法排序。#include<stdio.h>voidbubble(inta[],intn);voidswap2(int*,int*);intmain(void){in... 本人初学C语言。 题目是,输入n个正整数,然后从小到大输出。 我想问的是为什么第一个程序无法排序。 #include <stdio.h> void bubble(int a[],int n); void swap2(int *,int *); int main(void) { int i,n,a[8]; printf("Enter n(n<=8):"); scanf("%d",&n); printf("Enter n numbers into a[%d]:\n",n); for(i=0;i<n;i++) scanf("%d",&a[i]); bubble(a,n); printf("After sorted,a[%d]=",n); for(i=0;i<n;i++) printf("%3d",a[i]); printf("\n"); return 0; } void bubble(int a[],int n) { int i,j,flag; for(i=1;i<n;i++) { flag=0; for(j=0;j<n-1;j++) if(a[j]>a[j+1]) { swap2(&a[j],&a[j+1]); flag=1; } if(flag==0) break; } } void swap2(int *px,int *py) { int *t; t=px; px=py; py=t; } 下面的这个是可以实现的,只改动一个自定义函数 void swap2(int *px,int *py) { int t; t=*px; *px=*py; *py=t; } 为什么上面的不行啊!! 哪位大神能告诉下原因,感谢!! 展开 展开
 我来答
红娴休绍
2019-07-10 · TA获得超过3832个赞
知道大有可为答主
回答量:3173
采纳率:26%
帮助的人:233万
展开全部
void swap2(int *px,int *py)
{
int *t;
t=px;
px=py;
py=t;
}
swap2函数的功能是交换两个指针指向的值,
函数内部都是指针的操作,根本没有改变指针指向的值,
所以px和py指向的值没有交换。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式