交换变量值两种方式.docx
《交换变量值两种方式.docx》由会员分享,可在线阅读,更多相关《交换变量值两种方式.docx(9页珍藏版)》请在第一文库网上搜索。
1、交换变量值两种方式两个整型指针变量,通过指针方式交换两个整型变量的所赋的值,第一种方法通过交换两个整型变量的地址指针实现,而存放这两个整型变量首地址的指针变量随着这两个整型变量地址的交换而存放的两个首地址也会交换。第二种通过用指针变量所指变量值(指针)来互相赋值,直接达到交换两个指针变量所指的变量的值的目的。1交换两个变量的地址(指针变量),其对应的变量值不会改变。只是变量地址被交换了,读取变量的值会变,交换了变量所指的值。交换地址变量是指针地址,原指向变量值不变,只是指针所指向的内容变了。例:输入a和b两个整数,按先大后小的顺序输出a和b。用指针变量方法来处理这个问题。不交换整型变量的值,而
2、是交换两个指针变量的值(地址值)。编写程序:#inc1udeintmain()int*p1,*p2,*pzazb;/p11p2的类型是int*类型printf(p1easeentertwointegernumbersscanf(,%dz%dz&a,&b);输入两个整数p1=&a;p2=&b;使p1指向变量a使p2指向变量bif(ab)(P=p1;p1=p2;p2=p。如果ab,使PI与p2的值(地址)互换printf(,a=%dzb=%dnzazb);printf(nmax=%d,min=%dz*p1p2);return0;输出a,b输出p1和p2所指向的变量的值运行结果:p1easeente
3、rtwointegernunbers:5,9a=5zb=9max=9fmin=5输入a=5,b=9后,由于ab,需将p1和p2交换。并未交换a,b的值,只是交换了p1zp2的值(地址值),交换了p1zp2所指向的地址,相当交换了azb的地址,不是交换*p1及*p2的值。中间指针变量*P,是指针类型。p=p1;并未交换azb的值,只是交换了p1,p2的值,交换了p1zp2所指向的地址,相当交换了azb的地址)p1=p2;P2=P;注意:a和b的值并未交换,它们仍保持原值,但p1和p2的值改变了。p1的值原为&a,后来变成&b,p2原值为&b,后来变成&ao这样在输出*P1和*p2时,实际上是输出
4、变量b和a的值,所以先输出9,然后输出5o两个变量的值交换要利用第3个变量。实际上,可以改为P1=&b;p2=&a;直接对p1和p2赋以新值,这样可以不必定义中间变量P,便程序更加简练。如果超过2个,仍用中间变量容易混淆,一般通过建立第三个变量来交换数值;不建立变量,通过运算的方式交换,如果两数值过大,则可能会溢出,养成好习惯。这个问题的算法是不交换整型变量的值,而是交换两个指针变量的值(即a和b的地址)。2指针变量作为函数参数函数的参数不仅可以是整型、浮点型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。例:对输入的两个整数按大小顺序输出。如果用函数处理,而且
5、用指针类型的数据作函数参数。第一种方式中直接在主函数内交换指针变量的值(地址交换,不改变量值),现在在主函数之外定义一个交换函数SWaP将指向两个整型变量的指针变量(内放两个变量的地址)作为实参传递给swap函数的形参指针变量,在函数中通过指针实现交换两个变量的值。指针和指针变量的区别区别在于:1一个变量的(内存)地址称为该变量的指针,*p是说指针变量为p,通过指针能找到以它为地址的内存单元。而指针变量是用来存放另一个变量的地址的(即指针),存放地址的变量称为指针变量。指针变量是一种特殊的变量,它不同于一般的变量,一般变量存放的是数据本身,而指针变量存放的是数据的地址。2.如果一个指针变量存放
6、的是某个对象的地址,则称这个指针变量指向该对象。系统为每一个内存单元分配一个地址值,把这个地址值称为指针。如有inti=5;,存放变量i的内存单元的编号(地址)&i被称为指针。指针变量则是存放地址值的变量,指针变量是存放变量所占内存空间首地址的变量(因为一个变量通常要占用连续的多个字节空间)。比如在inti=5;后有一句int*p=&i;,就把i的地址&i赋给了int型指针变量p,也就是说p中存入&i。int*p就是说指针变量是存放指针的变量。指针变量,就是一个存放地址的变量,通常定义整形,实型等变量后,系统给变量分配一定的内存单,用来存放数据的,而定义一个指针变量给它分配的空间是用来存放地址
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交换 量值 方式