c语言指针函数交换(c语言 用指针实现两个数的交换)

本文目录
- c语言 用指针实现两个数的交换
- c语言用指针交换两个数
- C语言中如何交换两个指针变量的的值
- C语言用指针法交换两个数的顺序问题
- 指针作为函数参数时,如何实现两个数的交换
- C语言指针实现数据交换
- c语言指针值交换小弟求解!!!
c语言 用指针实现两个数的交换
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指向的地址的值,达到交换目的
c语言用指针交换两个数
在
huan(int
*p1,int
*p2)这个函数中,交换的只是两个指针的指向,但是函数的结束、返回,这两个指针本身就消失了(它们的值并不会传回到main()函数中)所以,最后的结果没有交换。
如果要起到交换的作用,这个函数应该这样写:
void
huan(int
*p1,int
*p2)
{
int
t;
t=*p1;
*p1=*p2;
*p2=t;
}
C语言中如何交换两个指针变量的的值
1、首先,就是最基本的知识,写头文件、函数声明、定义变量。
2、下面还需要定义指针,需要定义两个指针p1和p2,然后把a的地址赋值给p1,把b的地址赋值给p2。
3、然后就是调用函数,该函数没有返回值,就直接调用,但是参数进入的是a和b的地址,而不是a和b。
4、函数点用完之后,就是输出a和b的值看一看是否互换了。
5、首先,a和b的地址传给x和y,通过指针直接对a和b的值进行操作。
6、最后,就是调换*x和*y的值,这样就是实现了a和b的值。
C语言用指针法交换两个数的顺序问题
解答:
1. 注意形式参数和实际参数的区别,主函数中的x,y是实际参数,swap函数中的a,b是形式参数。他们各有自己的存储空间,互不干扰。
2. 在程序适当位置加上输出地址的语句,即可看出为什么回到主程序后,x,y的值为什么不交换。
为了更形象,可以用图表示它们的关系:
可见,交换的只是swap函数中的a,b值,对主函数中的a,b值没有影响。
3. 修改的方法,将swap的交换变成值的交换。
指针作为函数参数时,如何实现两个数的交换
用指针做形参的交换函数:
void swap(int* pa, int* pb)
{
int tmp = *pa;
*pa = *pb;
*pb = tmp;
}
C语言指针实现数据交换
void swap(int *x,int *y) x,y是地址
temp = *x; //temp的值是x地址指向的值
这么理解就明白了。
int a;
int *a2;
a = 5;
a2=&a
*a2 = 6;
运行到这里a就是等于6,有没有明白呢。
c语言指针值交换小弟求解!!!
因为指针a b是指向指针p q的,所以写成a b的时候只是单纯的指向p q它们所在的地方,而不是指向 i j的地方,也就相当于指针p q换了个位置,使得a指向q也就指向j,b指向p也就指向i,但是i,j自己的值并没有变化。那么void swap(int *a,int *b)函数对应的swap(p,q);的值是5,3。但是因为:只是p和q交换了位置,自己本身,但是没有牵扯到它们所指的地址,也就是p还是指i,q还是指j。
所以最后*p,*q这两个指针所指的值还是3,5。

更多文章:
idea控制台乱码(idea 输出 System.out.println() 控制台乱码)
2026年10月14日 07:30
spring事务的作用(为什么要使用spring的事务,一般在什么情况下使用)
2026年10月14日 05:40
linux怎么进入命令行(怎么样配置linux使其启动时直接登录到命令行模式)
2026年10月14日 02:00
java培训机构好还是大学好(大学生想转行学java,该去java培训班还是自学呢)
2026年10月13日 23:30
前端面试必背十个点(资深HR揭秘:Web前端面试技巧有哪些)
2026年10月13日 17:50
sqlplus重置用户名密码(Oracle中的plus的用户名和密码忘了怎么办)
2026年10月13日 17:40





