初学C语言编程求助!!!
例如输入3,4,结果会输出3>4,问题出在哪里/*输入两个整数a和b,按先大后小的顺序输出(利用函数实现)*/#include<stdio.h>voidmain(){in...
例如输入3,4,结果会输出3>4,问题出在哪里
/* 输入两个整数a和b,按先大后小的顺序输出(利用函数实现)*/
#include <stdio.h>
void main ()
{
int a,b;
int *pointer1,*pointer2;
void swap(int *pointer1,int *pointer2);
printf("Please input two int numbers :\n");
scanf("%d,%d",&a,&b);
pointer1 = &a;
pointer2 = &b;
if(a<b)
{
swap(pointer1,pointer2);
}
printf("a = %d, b = %d\n",a,b);
printf("%d > %d\n",*pointer1,*pointer2);
}
void swap(int *pointer1,int *pointer2)
{
int *p;
p = pointer1;
pointer1 = pointer2;
pointer2 = p;
} 展开
/* 输入两个整数a和b,按先大后小的顺序输出(利用函数实现)*/
#include <stdio.h>
void main ()
{
int a,b;
int *pointer1,*pointer2;
void swap(int *pointer1,int *pointer2);
printf("Please input two int numbers :\n");
scanf("%d,%d",&a,&b);
pointer1 = &a;
pointer2 = &b;
if(a<b)
{
swap(pointer1,pointer2);
}
printf("a = %d, b = %d\n",a,b);
printf("%d > %d\n",*pointer1,*pointer2);
}
void swap(int *pointer1,int *pointer2)
{
int *p;
p = pointer1;
pointer1 = pointer2;
pointer2 = p;
} 展开
1个回答
展开全部
你的交换只是交换了两个指针,但是函数返回后两个指针依旧没变化。你应该交换的是指针指向的值。你可以把swap改成这样试试
void swap(int *pointer1,int *pointer2)
{
int p;
p = *pointer1;
*pointer1 = *pointer2;
*pointer2 = p;
}
更多追问追答
追问
明明交换了两个指针,为什么函数返回后两个指针依旧没变化,就是这个地方不太明白
追答
这么跟你说吧,你对参数进行的任何操作都不会影响到参数本身。swap的参数pointer1和pointer2不是主函数里的pointer1和pointer2,相当于是另一个变量被赋予了pointer1和pointer2的值。所以你在函数里面做任何事情都是对新变量操作,不会影响原变量。
至于为什么传递指针进去可以,那是因为指针的本质就是地址,相同的指针的值指向的内存是一个内存空间。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询