【教学课件】第三讲指针引用运算符语句.ppt
《【教学课件】第三讲指针引用运算符语句.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第三讲指针引用运算符语句.ppt(74页珍藏版)》请在三一办公上搜索。
1、第三讲指针引用运算符语句,本讲内容,上次作业讲解指针及其应用引用运算符循环语句本讲作业,3.1 指针和引用,指针指针和数组引用,指针,具有指针类型的变量统称为指针变量。指针变量所表示的数据值是某个变量在内存中的地址值。称这个指针指向该变量。指针的类型是它所指向变量的类型,而不是指针本身数据值的类型,因为任何指针本身数据值的类型都是unsigned long int型。如:int a=5;int*p=/定义一个指向整型变量空间的指针,并初始化为整型变量a的起始地址,使p指向a。,1、指针概念,2、指针的定义,格式为:*;例如:int*pi;/一个指向整型变量的指针 float*pl;char*p
2、c;char(*pa)3;/一个指向数组空间的指针 int*pp;/一个指向指针变量空间的指针 注:类型的不同,并不影响指针本身空间大小的不同(都是内存地址值),但却决定了指针所指向的空间的不同,也带来了对指针所指向空间的不同操作。,一、赋值运算 定义一个指针后,必须先给它赋值后才能引用,否则易出错。如:int a=1,*p1,*p2;p1=/给p2所指向的变量赋值,3、指针的运算,1,2,3,此处无,代表取值,二、加一或减一运算如:int a10,*p;p=a;/p指向数组a中的a0元素 p=p+1;/这时p指向a1,三、相减运算(一定条件下)如:int a10,*p1,*p2;p1=/所得
3、为指针间相隔的元素个数,0 x00428D54,指针地址是无符号长整形:4 byte,C+中,数组元素可以用下标表示也可用指针表示。1、一维数组的指针表示如:int a5;a2=3;/下标表示 ai*(a+2)=3;/指针表示*(a+i)其中a是数组名,C+规定数组名是一个常量指针,其值是该数组首元素的地址值。如:int a5,*p;p=a;/与p=/错误!为什么?,指针和数组,2、二维数组的指针表示如:int b34;b23=3;/下标表示 bij*(*(b+2)+3)=3;/指针表示*(*(b+i)+j)其中b是二维数组名,对于b而言,b0等是其元素,但要注意这些元素的类型并不是int型,
4、而是相当于int 3型。因此,我们称b0等为第0行。其中b0行中有b00 b02三个元素,注意这些元素的类型才是int型。则有以下表示方式:b12*(b1+2)(*(b+1)2*(*(b+1)+2),#include iostream.hvoid main()int a12,*p=a;for(int i=0;i12;i+)*p=i+1;/元素赋值 if(i%4=0)coutendl;cout*pt;p=p+1;,a12,p,a0,a1,a2,a9,a10,a11,*pa0,指针下跳1,*pa1,给一维数组赋值并按每4个一行方式输出,a23,a00,int a34;int*pa=a00;/指针指
5、向数组首元素for(int i=1;i=12;i+)*pa=i;/给元素赋值 cout*pat;/输出元素的值 pa=pa+1;/指针往下走一单元/如果是4的倍数换行 if(i%4=0)coutendl;,给二维数组赋值并按每4个一行方式输出,行i,组j,列k,a,b,c,d,0,u,v,w,x,0,s6,p,char s6=abcde;char*p=s;coutpors;p=p+1;coutp;,例3.1#include void main()static int a5=5,4,3,2,1;int i,j;i=a0+a4;/下标表示 j=*(a+2)+*(a+4);/指针表示 coutitj
6、;int*pa=a;pa=pa+1;/pa=?*pa=?pa+;/pa=?*pa=?a0、a1、a2=?,6 4,1005 4,1009 3,5 4 3,例3.2#include void main()static int b 4=1,2,3,4,5,6;b02=7;b12=8;cout*bt*(b+1)n;cout*(*b+1)t*(*(b+1)+2)n;coutb02+b12+b22;,7,8,输出结果为:1 4 2 815,#include iostream.hvoid main()static char s1=abcde,s25=m,n,p,q,0;char*ps=s1;couts1
7、or s2endl;coutpsn;couts21s22s13s14endl;cout*ps*(ps+2)*(ps+4)*ps+2;,abcde or mnpqabcdenpdeace99,S1,S2,ps,int A4,A0,A1,A2,A3,1000,1004,1008,100C,int B44,B0,B1,B2,B3,用数组存放26个字母并输出,#include iostream.hvoid main()char s 26;for(int i=0;i26;i+)si=A+i;/si=65+i/给数组元素赋值 coutsi;/输出数组,ABCDEFGHIJKLMNOPQ,引用作为一种数据类
8、型,通常被认为是另一种变量的别名。其定义格式为:则m是对a的一个引用,所有对m的操作都是对a的操作。注意:引用必须初始化,且一旦被初始化后不能再被重新赋值。即不能改变引用目标。,3.2引用,8,引用可以针对一个常量。如:int,3.3 运算符,算术运算符关系运算符逻辑运算符位操作运算符赋值运算符其他运算符运算符的优先级和结合性,算术运算符,单目运算符(-(负)双目运算符(+(加)、-(减)、*(乘)、/(除)、%(模,求余)优先级为:负号级别最高,其次为*/%,再就是+-。要求:操作数为数值型数据其中%要求为整型/与%的第二操作数不为0特别注意“/”,当分子分母都是整数是做整除!,1、普通算术
9、运算符,2、增1和减1运算符增量操作表示加1,减量操作表示减1。如:int a=4;a+;/等效于a=a+1;+a;/等效于a=a+1;a-;/等效于a=a-1;-a;/等效于a=a-1;增量操作符有前增量与后增量之分。前增量操作+a的意义为:先修改操作数的值再将增1后的a值作为表达式的值。而后增量操作a+的意义为:先将a的值作为表达式的值确定下来,再将a增1。,如:int a=3;int b=+a;int c=a+;则:a:5,b:4,c:4。相应的,有-a和a-。增量和减量操作符都是单目操作符。,近水楼台先得月,3,4,5,4,4,4,关系运算符,C+提供了6种关系运算符:(小于)、(大于
10、)、=(小于等于)、=(大于等于)、=(等于)、!=(不等于)关系运算符都是双目运算符。优先级:、=、=四种比=、!=两种要高要求:两个操作数为同一类型其结果值为1(代表逻辑真)或0(代表逻辑假)。,逻辑运算符,三种逻辑运算符:&(逻辑与)、|(逻辑或)、!(逻辑非)。其中逻辑非为单目运算符,逻辑与和逻辑或为双目运算符。优先级:!的优先级最高,而&又比|要高。逻辑表达式中的操作数是作为逻辑量,但C+并不专门提供逻辑类型,只用1与0来代表逻辑结果真与假。对于参与逻辑运算的操作数,其值为0代表逻辑假,为非0时代表逻辑真。如:!(a=9),位操作运算符,位运算是指直接对int型或char型数据的各位
11、进行运算。C+中的位运算符有两类:1、按位逻辑运算符共有四种:(按位取反运算符)、(按位与运算符)&(按位异或运算符)、(按位或运算符)|如:a:01101110,则a为10010001(按位取反)如:a:10101101,b:11001011则:a&b为10001001(都为1时才为1)ab为01100110(同号为0,异号为1)a|b为11101111(都为0时才为0)优先级:高于&,&高于,高于|。,2、移位运算符()移位运算是指将一个操作数中的各位都向左(用)移动若干位。如:a:10001101则:a4为00001000,赋值运算符,如:I=j=k=5;则等效于:k=5;j=k;I=j
12、;当赋值号两边的数据类型不一致时,编译器会在赋值前将右操作数自动转换为同左操作数相同的类型。如:int a=3.14;/a:3注意:1、赋值运算符=与比较运算符=的混淆。2、int x=1;与int x;x=1;在概念上的区别。,在C+中,将算术运算符、位运算符同赋值运算符结合可形成复合赋值运算符。一共有十种:+=、-=、*=、/=、%=、=、&=、=、|=。如:a+=b 等效于 a=a+b注意:运算时右边的表达式是被作为一个整体参与运算的。如:a*=3+b 等效于 a=a*(3+b)而不是等效于 a=a*3+b,x=015 00001101 y=0 x2b 00101011 x|y 0010
13、1111 47 xy 00100110 38 x&y 00001001 9 x 1 1 1 1 0 0 1 0 y 1 1 0 1 0 1 0 0 x+y 10 0 0 0 0 1 1 0 x=4 0000 00102,例题:位运算,已知:unsigned int x=015,y=0 x2b,A:!a,int a(5),b(3);求表达式、a、b的值,9,1,0,5,3,1,5,3,3,1,3,15,10,4,8,8,3,1,5,3,简称:短路,A:d+-rd;B:*pd*rd;C:+*pd-rd;D:+rd-d;,int d(5),*pd=&d,&rd=d,求表达式的值,A:0B:25C:0
14、D:0;,其他运算符,1、条件运算符语法为:(条件表达式)?(条件为真时的表达式):(条件为假时的表达式)如:x=ab?a:b;/实现把a和b中较小的值赋给x条件运算符是C+中唯一的一个三目运算符。,2、逗号运算符语法为:表达式1,表达式2,表达式n C+将顺序计算表达式1,表达式2,表达式n的值。而整个逗号表达式的值是表达式n的值。如:int a,b,c,d;d=(a=1,b=a+2,c=b+3);则:a、b、c、d的值分别为1、3、6、6,最后一个表达式的值就是逗号表达式的值,3、强制类型转换运算符用来将指定的表达式的值强制为所指定的类型。格式为:()或:()如:int a;double
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第三 指针 引用 运算 语句
链接地址:https://www.31ppt.com/p-5661277.html