计算机等级考试二级C++各章内容摘要:第4章

时间:2008-10-05 18:48:00   来源:无忧考网     [字体: ]
第4章 数组、指针与引用
【考点一】 数组
1.一维数组(1)一维数组的定义一维数组是由具有一个下标的数组元素组成的数组,其定义形式如下:<数据类型><数组名>[<数组长度>];在此,<数据类型>是类型说明符,<数组名>是数组的名字,<数组长度>是任一值为正整数的int型常量表达式。<数组长度>用来指定数组中元素的个数,即数组的大小,数组元素的下标是从0到<数组长度>-1。(2)一维数组初始化与所有的基本数据类型相同,数组也可以在时初始化。当数组声明没有给出数组的大小,但是有初始化列表时,数组的大小就由列表中元素的个数来确定。在定义数组时,可以不必给出所有数组元素的初始值,即在定义时部分地初始化数组。(3)访问数组元素访问数组元素的语法形式是:<数组名>[<表达式>]在此,<表达式>是非负的int型表达式,称为下标。下标用于指定所要访问的数组中元素的位置。在C+ +中,[]是一个运算符,称为下标运算符。数组下标从0开始,长度为n的数组,其下标的范围是0到n-1。在数组定义以后,给数组赋值时,必须一个元素一个元素的逐个访问。
2.二维数组以行和列(即二维)形式排列的固定数目元素的集合,并且组成数组的每个元素的类型都相同,即带有两个下标的数组。(1)二维数组的定义定义二维数组的语法是:<数据类型><数组名>[<表达式1>][<表达式2>];在此<表达式1>和<表达式2>是值为正整数的常量表达式。表达式<表达式1>和<表达式2>,分别用来指定数组中行和列的数目。(2)二维数组初始化与一维数组相同,二维数组也可以在定义时初始化。在定义时初始化二维数组要注意:①所有在一行中的元素可以用花括号括起来,并且用逗号分隔;②对于数字类型数组,如果给定的数值不够,则没有指定数值的元素将初始化为0。此时,至少应有一个值来初始化二维数组。③当数组声明时没有给出第一维的大小,但是有初始化列表时,第一维的大小就由列表中子列表的个数来确定。(3)访问二维数组元素若要访问二维数组的元素,必须要给出两个下标:一个行下标和一个列下标。访问二维数组元素的语法是:<数组名>[<表达式1>][表达式2];这里<表达式1>和<表达式2>是值为非负整数的表达式。<表达式1>指定行下标,<表达式2>指定列下标。(3)多维数组在C+ +中,对数组维数没有限制。下面是对数组的通用定义。以n维列表形式排列的固定数目元素的集合,称为n维数组。定义n维数组的语法是:<数据类型><数组名>[<泶锸?>][<表达式2>]…[<表达式n>];在此<表达式1>,<表达式2>,…<表达式n>都是值为正整数的常量表达式。访问n维数组元素的语法是:<数组名>[<表达式1>][<表达式2>]…[<表达式n>];在此<表达式1>,<表达式2>,…<表达式n>都是值为非负整数的表达式。<表达式i>(i=1,2,…,n)用来指定第i维元素的位置。在将多维数组作为函数的形参时,可以不指定该数组中第一维的大小,但是必须指定该数组中其他维的大小。多维数组只可以作为引用参数传递给函数,并且函数不能返回一个数组类型的返回值。C+ +对数组下标不做检查。4.字符数组(1)string类型与字符数组string类型在ANSI/ISO标准C+ +颁布之前,标准C+ +库并不提供string数据类型。string是一种用户自定义的数据类型,它由C+ +标准库来支持,而不是C+ +语言本身的一部分。在使用strign数据类型之前,需要在程序中包含头文件string并声明其所在的名字空间std。所有元素都是char类型的数组称为字符数组。字符数组有如下特点:①数组元素跟一般变量一样可以赋值、比较、计算等。②数组下标也是从0~N-1(N为数组长度)。③字符数组长度可以显式给出,也可以隐式得到。④由双引号括起来的字符串常量具有静态字符串数组类型。⑤用字符串对数组初始化时,编译程序以′\0′作为结束这个数组的标志。因此,数组长度至少要比字符串长度多1。(2)常用字符串函数C+ +提供了一系列字符串操作的函数,这些函数都包含在头文件cstring中。其中经常会用到的字符串函数包括:strcpy(字符串拷贝,将一个字符串拷贝到另一个字符串变量中)、strcat(字符串连接,在字符串末端添加字符串)、strcmp(字符串比较,用来比较字符串)、strlen(字符串长度,用来求出字符串长度)、和strstr(字符串查找,在一个字符串中查找子串)。①strcpy函数调用strcpy()函数的一般形式为:strcpy(to,from);
该函数将from字符串中的内容复制到to字符串中。请记住,构成to的字符串必须足够大,以便保存包含在from中的字符串。否则,to字符串将会溢出,这很可能会导致系统崩溃。②strcat函数调用strcat()函数的一般形式为:strcat(s1,s2);
该函数将字符串s2添加到字符串s1的末端;但并不修改字符串s2。必须确保字符串s1足够大,以便保存它自己的内容和字符串s2中的内容。③strcmp函数调用strcmp()函数的一般形式为:strcmp(s1,s2);
该函数比较两个字符串,如果两个字符串相等,返回0。如果字符串s1在字典顺序上比字符串s2大,则返回一个正数;如果比字符串s2小,则返回一个负数。注意:函数strcmp比较两个字符串时所采用的字典顺序与真正意义上的字典顺序还是有些差别的。实际上,它依次比较两个字符串相应字符的编码值(如ASCII码值)来决定两个字符串的大小。如,上面比较strcmp(″A″,″a″)的结果变为-1,因为字符′A′的编码值为65,而字符′a′的编码值为97,这与传统意义上的字典顺序不同。④strlen函数调用strlen()函数的一般形式为:strlen(s);
该函数返回字符串s的长度,即字符串中字符的个数(不包括字符串结尾的′\ 0′)。⑤strstr函数调用strstr()函数的一般形式为:strstr(s1,s2);
该函数在字符串s1中从左边开始查找字符串s2,若查找成功则返回s2在s1中首次出现的位置,否则返回NULL,如果s2为″ ″,则返回s1。 【考点二】 指针指针(即指针变量)是C+ +语言的功能之一。一个指针是一个特定类型数据的存储地址,比如一个变量的地址。与其他类型变量一样,指针变量也必须要声明。指针变量声明的一般形式为:<数据类型>*<变量名>;
其中,<数据类型>是指针所指对象的类型,在C+ +中可以指向任何C+ +类型。<变量名>是指针变量名。指针使用两种特殊的运算符--*和&。一元(单目)运算符&用于返回其操作对象的内存地址,其操作对象通常为一个变量名。例如:ptr=&total;