6.2指针的运算例:int * ptr, i=10 ;/指向整型变量ptr = &i;char * sp=“string”;1指向字符串常量,将第一个元素的//地址赋给指针spint a[5],* ap ;/指向数组,数组名本身就具有地址性。ap = a;*ptr=&i;//非法赋值//非法赋值不ap = a;15
15 6.2 指针的运算 例: int * ptr, i=10 ; ptr = &i ; //指向整型变量 char * sp = “string”; //指向字符串常量,将第一个元素 的 //地址赋给指针sp int a[5], * ap ; ap = a ; //指向数组,数组名本身就具有地址性。 * ptr = &i;//非法赋值 * ap = a; //非法赋值
6.2指针的运算例6-1:编写用于交换两个整型变量的值的函数在例5-3中曾经直接编写过交换两个整型变量值的函数swapO,但并没有完成交换变量a和b的任务。1交换变量a和的值,不成功uoid swap(int x,int y)0x0012FF18函数swap(中的局部变量tempint temp;temp = x;2Ox0012FF24函数swap中的参数变量x = y;30x0012FF28承数swapO中的参数变量y= temp;30x0012FF78主函数中的变量bswap(2,3)20x0012FF7C主函数中的变量a函数swapO运算开始时的内存分配示意图16
16 6.2 指针的运算 例6-1: 编写用于交换两个整型变量的值的函数。 在例5-3中曾经直接编写过交换两个整型变量值的函数 swap(),但并没有完成交换变量a和b的任务。 函数swap()运算开始时的内存分配示意图
6.2指针的运算例6-1:编写用于交换两个整型变量的值的函数。20x0012FF18函数swap(中的局部变量tempOx0012FF243函数swap(中的参数变量x20x0012FF28函数swap中的参数变量y3主函数中的变量bOx0012FF7820x0012FF7C主函数中的变量a函数swapO运算结束时的内存分配示意图在例5-3中swapO函数的两个参数变量x和y,但主函数的变量a和b的值却没有发生变化,swapO函数运行结束并返回主函数后,X、y和temp占用的内存单元,都将释放。17
17 6.2 指针的运算 例6-1: 编写用于交换两个整型变量的值的函数。 函数swap()运算结束时的内存分配示意图 ➢ 在例5-3中swap()函数的两个参数变量x和y,但主函数的变量a 和b的值却没有发生变化。 ➢ swap()函数运行结束并返回主函数后,x、y和temp占用的内存 单元,都将释放
6.2指针的运算例6-1:编写用于交换两个整型变量的值的函数。/交换变量a和b的值uoidswap(int*xp,int*yp)20x0012FF18函数swap()中的局部变量tempint temp;temp=*xp;Ox0012FF24函数swap中的参数变量xp0x0012FF7C*×p=*y;0x0012FF28函数swap(中的参数变量yp0x0012FF78*yp=temp;0x0012FF783主函数中的变量b20x0012FF7C主函数中的变量aswap(&a,&b);注意:参数变量xp和yp是两个指向整型变量的指针,在调用该函数时,只能使用变量的地址作为实参。新swapO函数通过地址直接对主函数中原来的变量a和b进行操作,完成了交换两个变量值的任务。18
18 6.2 指针的运算 例6-1: 编写用于交换两个整型变量的值的函数。 注意:参数变量xp和yp是两个指向整型变量的指针,在调用该函数时,只能使用变 量的地址作为实参。 新swap()函数通过地址直接对主函数中原来的变量a和b进行操作,完成了交换 两个变量值的任务
6.2指针的运算*p1int a = 5, * pl;&ap15apl=&a ;*p2&bintb = 10;p210bp2;int?p2 = & b;cout<<*p2<<endl; //输出10p2=&(*pl);cout<<*p2<<endl;//输出5
6.2 指针的运算 int b = 10; int * p2; p2 = & b; cout<<*p2<<endl; //输出10 *p1 p1 a &a 5 p2 b &b *p2 10 p2=&(*p1); cout<<*p2<<endl; //输出5 int a = 5, * p1; p1 = &a ;