C++课件第3讲指针引用类型声明

上传人:E**** 文档编号:90579521 上传时间:2019-06-13 格式:PPT 页数:69 大小:765KB
返回 下载 相关 举报
C++课件第3讲指针引用类型声明_第1页
第1页 / 共69页
C++课件第3讲指针引用类型声明_第2页
第2页 / 共69页
C++课件第3讲指针引用类型声明_第3页
第3页 / 共69页
C++课件第3讲指针引用类型声明_第4页
第4页 / 共69页
C++课件第3讲指针引用类型声明_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《C++课件第3讲指针引用类型声明》由会员分享,可在线阅读,更多相关《C++课件第3讲指针引用类型声明(69页珍藏版)》请在金锄头文库上搜索。

1、第三讲 指针引用运算符语句,2,本讲内容,指针及其应用 引用 C+处理字符串的方法 用typedef声明类型 循环语句 本讲作业,3.1 指针和引用,指针 指针和数组 引用,指针,具有指针类型的变量统称为指针变量。 指针变量所表示的数据值是某个变量在内存中的地址值。称这个指针指向该变量。 指针的类型是它所指向变量的类型,而不是指针本身数据值的类型,因为任何指针本身数据值的类型都是unsigned long int型。 如: int a=5; int *p= /定义一个指向整型变量空间的指针,并初始化为整型变量a的起始地址,使p指向a。,1、指针概念,2、指针的定义,格式为: *; 例如: in

2、t *pi; /一个指向整型变量的指针 float *pl; char *pc; char (*pa)3; /一个指向数组空间的指针 int *pp; /一个指向指针变量空间的指针 注:类型的不同,并不影响指针本身空间大小的不同(都是内存地址值),但却决定了指针所指向的空间的不同,也带来了对指针所指向空间的不同操作。,指针,一、赋值运算 定义一个指针后,必须先给它赋值后才能引用,否则易出错。 如: int a=1,*p1, *p2; p1= /给p2所指向的变量赋值,3、指针的运算,1,2,3,此处无,代表取值,指针,二、加一或减一运算 如: int a10,*p; p=a; /p指向数组a中

3、的a0元素 p=p+1; /这时p指向a1,三、相减运算(一定条件下) 如: int a10,*p1,*p2; p1= /所得为指针间相隔的元素个数,0x00428D54,指针地址是无符号长整形: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;

4、/下标表示 bij *(*(b+2)+3)=3; /指针表示 *(*(b+i)+j) 其中b是二维数组名, 对于b而言,b0等是其元素,但要注意这些元素的类型并不是int型,而是相当于int 3型。 因此,我们称b0等为第0行。 其中b0行中有b00 b02三个元素,注意这些元素的类型才是int型。 则有以下表示方式: b12 *(b1+2) (*(b+1)2 *(*(b+1)+2),指针和数组,#include “iostream.h“ void main() int a12,*p=a; for(int i=0;i12;i+) *p=i+1; /元素赋值 if(i%4=0)coutendl;

5、 cout*p“t“; p=p+1; ,a12,p,a0,a1,a2,a9,a10,a11,*p a0,指针下跳1, *p a1,给一维数组赋值并按每4个一行方式输出,a23,a00,int a34; int *pa=a00; /指针指向数组首元素 for(int i=1;i=12;i+) *pa=i; /给元素赋值 cout*pa“t“; / 输出元素的值 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“;

6、 char *p=s; coutp“or“s; 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); /指针表示 couti“t“j; 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

7、; b02=7;b12=8; cout*b“t“*(b+1) )“n“; cout*(*b+1)“t“*(*(b+1)+2) “n“; coutb02+b12+b22; ,7,8,输出结果为:1 4 2 8 15,指针和数组举例,#include “iostream.h“ void main() static char s1=“abcde“,s25=m,n,p,q,0; char *ps=s1; couts1“ or “s2endl; coutpsn; couts21s22s13s14endl; cout*ps*(ps+2)*(ps+4)*ps+2; ,abcde or mnpq abcde

8、npde ace99,S1,S2,ps,指针和数组举例,int A4,A0,A1,A2,A3,1000,1004,1008,100C,int B44,B0,B1,B2,B3,指针和数组举例,用数组存放26个字母并输出,#include “iostream.h“ void main() char s 26; for(int i=0;i26;i+) si=A+i;/ si=65+i /给数组元素赋值 coutsi“ “; /输出数组 ,A B C D E F G H I J K L M N O P Q,引用作为一种数据类型,通常被认为是另一种变量的别名。 其定义格式为: 则m是对a的一个引用,所有

9、对m的操作都是对a的操作。 注意:引用必须初始化,且一旦被初始化后不能再被重新赋值。即不能改变引用目标。,3.2 引用,8,引用可以针对一个常量。 如: int ,3.2 引用,例:引用和变量的关系。 #include #include using namespace std; int main( ) int a=10; int ,引用的简单使用,运行记录如下: 100 100 (a和b的值都是100) 20 20 (a和b的值都是20),1. 定义字符串变量 和其他类型变量一样,字符串变量必须先定义后使用,定义字符串变量要用类名string。如 string string1; /定义stri

10、ng1为字符串变量 string string2=“China“; /定义string2同时对其初始化,3.3 C+处理字符串的方法,将C+标准库中的string头文件包含进来,即应加上 #include /注意头文件名不是string.h,2. 对字符串变量的赋值 string1=“Canada“; string2=string1; 在定义字符串变量时不需指定长度,长度随其中的字符串长度而改变。可对字符串变量中某一字符进行操作,如 string word=“Then“; /定义并初始化字符串变量word Word2=a; /修改后word的值为“Than“,3.3 C+处理字符串的方法,3.

11、 字符串变量的输入输出 cin string1; /从键盘输入一个字符串给string1 cout string2; /将字符串string2输出,在以字符数组存放字符串时,字符串的运算要用字符串函数,如strcat、strcmp、strcpy,而对string类对象,可以不用这些函数,而直接用简单的运算符。 (1) 字符串复制用赋值号 string1=string2; 其作用与“strcpy(string1,string2);”相同。 (2) 字符串连接用加号 string string1=“C+ “; /定义string1并赋初值 string string2=“Language“; /定

12、义string2并赋初值 string1=string1 + string2; /连接string1和string2 连接后string1为“C+ Language“。,3.3 C+处理字符串的方法,(3) 字符串比较直接用关系运算符 可以直接用 =(等于)、(大于)、=(大于或等于)、=(小于或等于)等关系运算符来进行字符串的比较。,3.3 C+处理字符串的方法,string name5; /定义字符串数组,它包含5个字符串元素 string name5=“Zhang“,“Li“,“Fun“,“Wang“,“Tan“; /定义一个字符串数组并初始化,字符串数组,3.3 C+处理字符串的方法,

13、(1) 在一个字符串数组中包含若干个(现为5个)元素,每个元素相当于一个字符串变量。 (2) 并不要求每个字符串元素具有相同的长度,即使对同一个元素而言,它的长度也是可以变化的,当向某一个元素重新赋值,其长度就可能发生变化。 (3) 在字符串数组的每一个元素中存放一个字符串,而不是一个字符,这是字符串数组与字符数组的区别。如果用字符数组存放字符串,一个元素只能存放一个字符,用一个一维字符数组存放一个字符串。 (4) 每一个字符串元素中只包含字符串本身的字符而不包括0。,3.3 C+处理字符串的方法,系统为每一个字符串变量分配4个字节(因为指针就是无符号的整型),在这个存储单元中,并不是直接存放

14、字符串本身,而是存放字符串的地址。在本例中,就是把字符串“Zhang“的地址存放在name0,把字符串“Li“ 的地址存放在name1,把字符串“Fun“的地址存放在name2 在字符串变量中存放的是字符串的指针(字符串的地址)。,用字符串数组存放字符串及对字符串进行处理是很方便的。 在定义字符串数组时怎样给数组分配存储空间呢?,3.3 C+处理字符串的方法,例: 输入3个字符串,要求将字母按由小到大的顺序输出。 #include #include /别忘记了这行! using namespace std; int main( ) string string1,string2,string3,temp; cinstring1string2string3; if(string2string3) temp=string2;string2=string3;string3=temp; if(string1=string2) coutstring1“ “string2 “ “string3endl; else if(string1=string3) coutstring2“ “string1 “ “string3endl; else coutstring2“ “string3“ “string1endl; ,字符串运用举例,例: 一个班有n个学生(姓名和学号), 当输入一个姓名后查

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号