资源描述:
《第4章 数组和指针 - 副本.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C++程序设计第4章数组和指针第4章数组和指针4.1数组和指针的概念4.2托管数组4.3托管数组类4.4多维托管数组4.5集合4.6数组与集合综合应用实例4.1数组和指针的概念4.1.1数组的概念4.1.2指针的概念4.1.1数组的概念使用数组的必要性数组的定义数组的维数C/C++中数组的声明使用数组的必要性一个程序处理所的数据往往来自同类型的一个集合(例如一个班的学生)。集合中的数据有时无需同时保存在内存中(例如对成绩求和时,一个学生数据中的mark值加入变量sum后,便可被下一个学生的数据所覆盖)。但多数情况下并非如此,例如线性代数中的向
2、量和矩阵运算、数据处理中的排序、检索等,都需将一组同类型的数据以一个名字同时保存在内存中并通过下标进行检索,这时就需要用到数组。数组的定义数组是同类型变量的有序集合,用唯一的标识符——数组名表示集合中的所有元素;用数组名加下标表示集合中的每个元素。一个数组一旦被创建,它的n个元素就作为n个相关的变量,被同时映射到内存空间。假设一个名为A的n个元素的一维double型数组,其数组元素为:A[0],A[1],…,A[n-1]则该数组可以用来表示向量(a0,a1,…,an-1)数组的维数线性空间维数的概念也可延伸到数组。设有一维向量x={xi},i
3、=0,1,…,n-1则x可用一维数组X表示为X[0],X[1],…,X[n-1]设有二维矩阵a={aij},i=0,1,…,m-1;j=0,1,…,n-1则a可用二维数组A表示为A[0][0],A[0][1],…,A[0][n-1],A[1][0],A[1][1],…,A[1][n-1],…,A[m-1][0],A[m-1][1],…,A[m-1][n-1]C/C++中数组的声明C和标准C++的数组声明和创建方法是一样的,一维数组可通过以下语法进行声明:类型数组名[常量表达式]例如:intx[10];//声明了一个10个元素的整型数组二维数组
4、可通过以下语法进行声明:类型数组名[常量表达式0][常量表达式1];例如:doubleA[10][10];//声明了一个10×10个元素的双精度浮点型数组4.1.2指针的概念什么是指针内存的地址指针声明和赋值指针的运算指针名代替数组名什么是指针指针(pointer)是C/C++区别于其它高级语言的特色之一,也是它们被称为“中级语言”(介于高级语言和机器语言之间的语言),可用来编写操作系统的原因。指针就是用于存放内存地址的变量,C/C++允许用"&"和"new"操作符获得内存的物理地址,从而按该地址对内存中的数据进行改写。这虽然方便了底层操作,
5、但也带来安全性上的隐患,因此,指针在C++/CLI中受到了禁止。内存的地址在序言中阐述了数据对象的四个特征,即类型、名字、地址和值。除地址以外,都可以在数据对象的声明中得到体现。例如:intx=3;//int是类型,x是名字,3是值变量x是按地址映射到内存空间的,那么它的地址是什么?C和标准C++允许在x之前加"&"操作符来获得x的地址,即&x//该表达式的值为已有变量x的地址也允许通过new操作符创建动态内存单元:newint//表达式的值为系统分配的内存单元的地址指针声明和赋值在C/C++中声明一个指针,是在该指针拟存放其地址的变量的类型
6、之后加"*",再跟一个指针变量名,例如:int*p;//声明一个指向int型变量的指针可以用通过"&"或"new"获得的内存的地址来为指针变量赋值,例如:p=&x;/*或*/p=newint(3);//3为内存单元的值并通过在指针之前加运算符"*",通过指针间接地访问它所“指向”的内存,例如:printf("x=%d",*p);//输出3指针的运算C/C++允许对指针做加减一个常量、增量和比较运算,从而可以将其作为一个“游标”来访问数组的各个元素。例如:intx[10]={1,2,3,4,5,6,7,8,9,10};int*p=x;//让p指
7、向数组x的第一个元素for(inti=0;i<10;i++){printf("%d",*p);p++;}//打印出数组x各个元素的值1~10指针名代替数组名当指针指向数组的第一个元素时,也可以用指针名代替数组名在其后加下标来访问数组元素,例如上页的例子也可以改写为intx[10]={1,2,3,4,5,6,7,8,9,10};int*p=x;//让p指向数组x的第一个元素for(inti=0;i<10;i++)printf("%d",p[i]);使用new操作符,可以直接创建一个数组:intp=newint[10];//创建一个int型动态数
8、组for(inti=0;i<10;i++)p[i]=i+1;//元素赋值4.2C++/CLI的托管数组4.2.1托管数组概述4.2.2托管数组的创建4.2.3托管数