C语言用指针法交换两个数的顺序问题
交换两个数的顺序,可以交换地址,可以交换值。当用函数调用法交换地址的时候,为什么不可以实现。程序如下:#include<stdio.h>//这是用一个主函数就交换的方法。...
交换两个数的顺序,可以交换地址,可以交换值。当用函数调用法交换地址的时候,为什么不可以实现。程序如下:
#include<stdio.h>//这是用一个主函数就交换的方法。
main()
{
int a,b,*x,*y,*t;
scanf("%d %d",&a,&b);
x=&a;y=&b;
{t=x;x=y;y=t;}
printf("%d %d\n",*x,*y);
}
#include<stdio.h>//这是用函数调用的方法,为什么这个方法为什么就不能实现。
main()
{
int swap(int *a,int *b);
int a,b,*x,*y;
scanf("%d %d",&a,&b);
x=&a;y=&b;
swap(x,y);
printf("%d %d\n",*x,*y);
}
int swap(int *a,int *b)
{
int *t;
{t=a;a=b;b=t;}
} 展开
#include<stdio.h>//这是用一个主函数就交换的方法。
main()
{
int a,b,*x,*y,*t;
scanf("%d %d",&a,&b);
x=&a;y=&b;
{t=x;x=y;y=t;}
printf("%d %d\n",*x,*y);
}
#include<stdio.h>//这是用函数调用的方法,为什么这个方法为什么就不能实现。
main()
{
int swap(int *a,int *b);
int a,b,*x,*y;
scanf("%d %d",&a,&b);
x=&a;y=&b;
swap(x,y);
printf("%d %d\n",*x,*y);
}
int swap(int *a,int *b)
{
int *t;
{t=a;a=b;b=t;}
} 展开
19个回答
展开全部
int swap(int *a,int *b)//a与b分别复制主函数x与y的值,即a与x的指向相同,b与y的指向相同 { int *t; {t=a;a=b;b=t;}//通过交换,a和y的指向相同,b与x的指向相同,但是,x与y没有改变原来指向,这样函数swap结束,a与b消失,输出结果不变 } 换成 int t; {t=*a;*a=*b;*b=t;}//将改变x和y指向的地址的值,达到交换目的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你试一试看如下的程序是否能够正常交换两个整数的数值
void main( )
{
void swap(int *a, int *b) ; /* 函数原型说明 */
int a, b ;
scanf( "%d %d",&a,&b ) ;
printf("Before swap: %d %d\n",a, b ) ;
swap( &x, &y ) ; /* 调用交换两个整数的子函数,实参为指向整型的指针 */
printf("After swap: %d %d\n", a, b ) ;
}
void swap( int * a, int * b ) /* 交换两个整数的子函数,形参为指向整型的指针 */
{
int * t ; /* 定义一个临时指针变量 *t,以下三行用于进行两个整数的交换 */
( *t ) = (* a) ;
( *a ) = (* b) ;
(* b ) = (* t) ;
}
void main( )
{
void swap(int *a, int *b) ; /* 函数原型说明 */
int a, b ;
scanf( "%d %d",&a,&b ) ;
printf("Before swap: %d %d\n",a, b ) ;
swap( &x, &y ) ; /* 调用交换两个整数的子函数,实参为指向整型的指针 */
printf("After swap: %d %d\n", a, b ) ;
}
void swap( int * a, int * b ) /* 交换两个整数的子函数,形参为指向整型的指针 */
{
int * t ; /* 定义一个临时指针变量 *t,以下三行用于进行两个整数的交换 */
( *t ) = (* a) ;
( *a ) = (* b) ;
(* b ) = (* t) ;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
main()
{
void swap(int *a,int *b);//无返回值时类型为void;
int a,b,*x,*y;
scanf("%d %d",&a,&b);
x=&a;y=&b;
swap(x,y);
printf("%d %d\n",*x,*y);
}
void swap(int *a,int *b)
{
int t;
{t=*a;*a=*b;*b=t;}//这样才能完全调换
}
main()
{
void swap(int *a,int *b);//无返回值时类型为void;
int a,b,*x,*y;
scanf("%d %d",&a,&b);
x=&a;y=&b;
swap(x,y);
printf("%d %d\n",*x,*y);
}
void swap(int *a,int *b)
{
int t;
{t=*a;*a=*b;*b=t;}//这样才能完全调换
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询