资源描述:
《清华C++语言程序设计:第07章 指针课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章指针讲授内容指针的定义与运算指针与数组的关系字符串函数指针与const限定符传递指针参数动态内存分配方法函数指针7.1指针的定义指针:具有确定属性的地址属性决定了以该地址为起始地址的存储空间(数据单元)大小以及可以存放什么类型的数据指针变量:可以存放指针的变量7.1指针的定义charc='7';char*chptr=&c;intcount=7;int*countptr=&count;11111100countPtr01111100count701111100int类型char类型‘7’011011001110110
2、0chPtr01101100ch7.1指针的定义指针变量声明int*myPtr;说明了一个指向int类型的指针变量myPtrint*myPtr1,*myPtr2,i,j;可以说明指向任何数据类型的指针指针变量声明时可以初始化为0,NULL或某个地址0或NULL:不指向任何数据单元(推荐使用NULL)7.2指针的运算&(一元运算,地址运算符)运算结果为操作数(非register)的地址,如inty=5;int*yPtr;yPtr=&y;使yPtr指向yyPtry5500000yptr600000yy的地址是yptr的值60
3、000057.2指针的运算*(一元运算,间接引用运算符,其操作数表达式的值必须是指针),如int*yPtr,y;yptr=&y;*yptr=7;*yptr=*yptr+7;指针指向的数据单元中的值(右值)指针指向的数据单元(左值)7.2指针的运算*和&互为逆运算,如int*yPtr,y;yptr=&y;*yptr=7;*yptr=*yptr+*&y;*&*&y=*yptr+*&y;例子1:指针的运算(&、*的应用示例)#includeintmain(){intn;int*nPtr;n=7;nPtr=&n
4、;printf("Theaddressofnis%pThevalueofnPtris%p",&n,nPtr);printf("Thevalueofnis%dThevalueof*nPtris%d",n,*nPtr);printf("&*nPtr=%p*&nPtr=%p",&*nPtr,*&nPtr);return0;}7.2指针的运算指针的算术运算指针变量可以自增/自减(++或--)指针可以加/减一个整数(+或+=,-或-=)同类型指针可以相减一元运算符sizeof()操作数为变量名、类型
5、名或常量运算结果为操作数所需存储单元的字节数特例:操作数为数组名时,结果为数组所需存储单元的总字节数如sizeof(int)、sizeof(int*)均为4声明intmyArray[10],*p=myArray;后sizeof(myArray)为40、sizeof(p)为47.2指针的运算Intv[5],*vPtr=v;//vPtr为3000vPtr+=2;//赋值后vPtr为3008把vPtr的值当作整数和n*sizeof(int)相加,得到vPtr+n的实际值(指向后续第n个数组元素)指针变量vPtrv[0]v[1]
6、v[2]v[4]v[3]30003004300830123016地址:7.2指针的运算同类型指针相减intv[5],*vPtr,*vPtr2;vPtr=&v[0];vPtr2=&v[2];//vPtr2-vPtr结果为2.把vPtr2和vPtr的值当作整数相减后除以sizeof(int)(两个指针间的数组元素个数)7.2指针的运算指针的关系运算同类型指针可以进行各种关系运算可以判断指针是否为0或NULL如intv[5],*vPtr,*vPtr2;vPtr=&v[0];vPtr2=&v[2];while(vPtr7、2)vPtr++;7.2指针的运算指针的赋值运算同类型指针可以赋值不同类型的指针之间的赋值必须进行强制类型转换如int*nPtr;floatf=0.5,*fPtr=&f;nPtr=(int*)fPtr;特例:void类型的指针(类型void*)可以指向任何类型的数据void*类型的指针不能被复引用可以和其他类型的指针相互赋值7.2指针的运算如void*vPtr;float*fPtr;vPtr=fPtr;fPtr=vPtr;但下面这种情况不行,必须进行类型的强制转换void*vPtr;float*fPtr;int*iptr
8、;vPtr=fPtr;iPtr=vPtr;//错误iPtr=(int*)vPtr;//正确例子2:指针运算例子#includeintmain(){charc='A',*pc;intints[5]={1,2,3,4,5},*p1;intm=6,n=7;int*p2,*p3;pc=&c;printf("