为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不能用swap函数代替/* */部分呢?还是说这个函数是写的有问题的?因为结果是值没有交换

为什么不能用swap函数代替/* */部分呢?还是说这个函数是写的有问题的?因为结果是值没有交换

张幼安 2017-08-07 12:16:49
#include <stdio.h>int main(){//交换地址void swap(int *p1,int *p2); //申明swap函数int a,b;                    //定义初始变量int *pointer_1,*pointer_2;  //定义两个指针变量printf("please enter a and b:\n");scanf("%d,%d",&a,&b);       //将输入的两个常数赋值给初试变量a ,bpointer_1 = &a;pointer_2 = &b;printf("pointer_1 = %d,pointer_2 = %d\n",*pointer_1,*pointer_2); printf("a = %d,b = %d\n",a,b);swap(pointer_1,pointer_2);/*int *p;p = pointer_1;pointer_1 = pointer_2;pointer_2 = p;*/printf("max = %d,min = %d",*pointer_1,*pointer_2);return 0;}void swap(int *p1,int *p2){ int *p; p = p1; p1 =p2; p2 = p;}
查看完整描述

1 回答

?
宾丶高

TA贡献35条经验 获得超18个赞

你交换了指针的指向,但并没有改变指针指向的内容,将swap函数改为

int p;

 p = *p1;

 *p1 =*p2;

 *p2 = p;

,就可以了

查看完整回答
反对 回复 2017-08-07
  • 张幼安
    张幼安
    什么叫改变了指向,却没有改变指向的内容?意思是,改变了指向的同时,内容也发生变化了吗?
  • 宾丶高
    宾丶高
    我回答已经超过一年了大哥[微笑]
  • 1 回答
  • 0 关注
  • 1952 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信