用指针作为函数参数实现数的交换,能不能帮忙看一下程序出了什么问题?

#include <stdio.h>
int main(){
	int m(int *p,int k);
	int i,j,*p,k;
	printf("请输入一串数字:");
	int a[6];
	for(i=0;i<6;i++){
		scanf("%d",&a[i]);
	} 
	for(i=0;i<6;i++){
		printf("%d\t",a[i]);
	}
	p=&a[i];
	m(p,6); 
	for(i=0;i<6;i++){
		printf("%d",a[i]);
	}
}

int m(int *p,int k){
	int temp;
    int i,j;
	for(i=0;i<k-1;i++){
		for(j=i+1;j<k;j++){
		if(*p>*(p+1)){
			temp=*p;
			*p=*(p+1);
			*(p+1)=temp;
		}	
		}
	}
}

 

if(*(p+j)>*(p+j+1)){

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

*p一直是第一个元素的地址,所以只能交换a[0],a[1]2个元素的值。

p=&a[i];改成p=a试试

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y