当前位置:首页 > 开发语言 > 正文

用指针交换两个数的值

用指针交换两个数的值

各位老铁们好,相信很多人对用指针交换两个数的值都不是特别的了解,因此呢,今天就来为大家分享下关于用指针交换两个数的值以及使用指针交换两个数的问题知识,还望可以帮助大家,...

各位老铁们好,相信很多人对用指针交换两个数的值都不是特别的了解,因此呢,今天就来为大家分享下关于用指针交换两个数的值以及使用指针交换两个数的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

文章目录:

C语言问题:怎样用指针和函数实现两个数组的交换

1、注意形式参数和实际参数的区别,主函数中的x,y是实际参数,swap函数中的a,b是形式参数。他们各有自己的存储空间,互不干扰。 在程序适当位置加上输出的语句,即可看出为什么回到主程序后,x,y的值为什么不交换。

2、/ 编写c语言程序,实现交换两个变量值的操作。要求:使用形参为指针的函数swap完成交换功能。主函数中,使用整型指针从键盘输入两个整数,通过调用swap完成交换 输出交换前后的变量值进行比较。

3、首先,就是最基本的知识,写头文件、函数声明、定义变量。下面还需要定义指针,需要定义两个指针p1和p2,然后把a的赋值给p1,把b的赋值给p2。然后就是调用函数,该函数没有返回值,就直接调用,但是参数的是a和b的,而不是a和b。

4、指针的作用很多的,下面是我上课做的一些笔记,你可以看看。

5、而严重的情况是,该单元的数据可能是有用的,因此fun2()不但没有实现两个数的交换,反而给的稳定性带来威胁。fun3(),将int赋值给int *,编译错误。fun4()是正确的。

指针变量交换两个数的位置时为什么不加*就是错的?

因为指针变量中存储的是值,所以如果指针变量交换两个数的位置时不加*,就是把变量的值赋值给指针变量,这是不允许的。

定义,因为它是定义。不带“*”,就无法区分是指针还是变量。&:叫做,取符。p1=其实就是把a的取出来,赋给p1。你可以这么理解,*P1才是和变量a同一个等级的东西。&相当于降级取,那p1去掉星号*也相当于取。

当你重新定义一个char *temp, 这里明显是temperory,作为暂时的中间变量。temp本身也是指针的,现在将str[i]的值赋予temp,那么*temp和*str[i]就是同一个指针的不同名字,他们指向同一个内容。

他们各有自己的存储空间,互不干扰。 在程序适当位置加上输出的语句,即可看出为什么回到主程序后,x,y的值为什么不交换。为了更形象,可以用示它们的关系:可见,交换的只是swap函数中的a,b值,对主函数中的a,b值没有影响。 修改的方法,将swap的交换变成值的交换。

首先,虽然传递的是,但是仍然是属于传值调用的范畴。因为指针只是用来赋值,并没有被间接引用。那么你是不是想用传址调用呢,就这个程序而言,也是不行的。你希望通过交换str1和str2的值来实现字符串的赋值,是行不通的。

在下面程序一中想利用swap函数交换主函数中两个指向a和b 的指针,但是这样是不能实现的,因为函数的形参不能改变实参,所以主函数中的那两个指针是没变的;但是程序二中sort函数中有跟程序一的swap函数类似的操作,可是在没有返回值的情况下主函数却得到了改变后的结果。

C语言用指针法交换两个数的顺序问题

注意形式参数和实际参数的区别,主函数中的x,y是实际参数,swap函数中的a,b是形式参数。他们各有自己的存储空间,互不干扰。 在程序适当位置加上输出的语句,即可看出为什么回到主程序后,x,y的值为什么不交换。

其实就是内存的内容互换了;p1 = &a1,就是取了a1在内存中的给p1,这个指针,那么p1就指向了a1的那块内存。同理p2指向a2的内存。然后*p1是取p1内存中的内容,也就是a1,赋值给a;然后把*p2把p2内存的内容给*p1指向的内存。然后把a的值给p2指向的内存,*p2 = a;完成值的互换。

新建一个工程和.c文件 ,输入头文件和主函数。然后开始定义变量类型。输入a和b两个整数。对a和b两个不同的整数进行赋值。然后通过if语句实现值大小的比较。输出最后的结果。编译、运行,可以看见按先小后大的顺序输出a和b。

END,本文到此结束,如果可以帮助到大家,还望关注本站哦!

最新文章