转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 网络书斋 >> 正文
第4章 数组、指针与引用考点归纳         ★★★

《计算机二级C++考试辅导资料大全》之“ 第4章 数组、指针与引用考点归纳”篇

作者:闵涛 文章来源:闵涛的学习笔记 点击数:5114 更新时间:2007/10/4 16:52:13
    4.1 数组
     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维数组的语法是:
       <数据类型><数组名>[<表达式1>][<表达式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。
     4.2 指针
     指针(即指针变量)是C+ +语言最大的功能之一。一个指针是一个特定类型数据的存储地址,比如一个变量的地址。
     与其他类型变量一样,指针变量也必须要声明。指针变量声明的一般形式为:
       <数据类型>*<变量名>;
其中,<数据类型>是指针所指对象的类型,在C+ +中可以指向任何C+ +类型。<变量名>是指针变量名。
     指针使用两种特殊的运算符——*和&。
     一元(单目)运算符&用于返回其操作对象的内存地址,其操作对象通常为一个变量名。例如:
     ptr=&total;
把变量total的内存地址存到指针变量ptr中。该地址是total变量在计算机内存中的存储地址。
     第二个与指针相关的运算符是*,它与&运算符作用相反。作为一元运算符的*用于返回其操作数所指对象的值,因此,该运算符要求其操作对象为一个指针。
     1指针和地址
     (1)指针说明
     从指针的定义可知,指针是用所指对象类型来表征的。在使用任何指针变量之前必须先给它赋一个所指合法具体对象的地址值。
     如何使一个指针指向一个具体对象:
     ①使用new运算符(或malloc和alloc等函数)给指针分配一个具体空间。
     ②将另一个同类型的指针赋给它以获得值。
     ③通过&运算符指向某个对象。
     (2)指针运算
     尽管指针中存放的是变量的地址,但在C+ +中指针只能进行如下运算。
     ①指针和整型量可以进行加减
     ②若p1,p2为指针,当p1和p2指向同一类型时,可以进行赋值。
     ③两个指向同一类型的指针,可进行= =,>,<等关系运算,其实就是地址的比较。
     ④两个指向同一数组成员的指针可进行相减,结果为两个指针之间相差元素的个数。
     注意:两指针不能相加。
     2指针和数组
     在C+ +中,指针和数组的关系极为密切。实际上,数组的参数传递、数组元素的存取,都可通过指针操作来完成。指针和数组常常可以互换。
     在C+ +中,数组的名字就是指向该数组第一个元素(下标为0)的指针,即该数组第一个元素的地址,也即数组的首地址。
     一般情况下,一个数组元素的下标访问a[i]等价于相应的指针访问*(a+i)。但特别注意:数组名和指针(变量)是有区别的,前者是常量,即数组名是一个常量指针,而后者是指针变量。因此,尽管我们可写pa=a;但不能写:a=pa;或pa=&a;因为我们不能改变常量的值,也不能取常量的地址。
     数组名可作为参数进行传递。当将数组名传给函数时,实际上所传递的是数组的开始地址。(即数组第一个元素的地址)
     为什么要使用指针?简单地说指针运算比数组运算的速度快。
     此外,使用指针的另外一个原因是在大量数据传递时,使用传递指针要远比传递数据本身效率高的多,如在函数参数传递及函数返回值时。当然,使用指针会给程序带来安全隐患(如指针悬挂问题),同时还使得程序的可读性降低(显然,用数组实现的程序要比用指针实现的程序的可读性要好)。
     对于字符串常量,可以把它看成是一个无名字符数组,C+ +编译程序会自动为它分配一个空间来存放这个常量,字符串常量的值本身就是指向这个无名字符数组的第一个字符的指针,其类型是字符指针。
     3指针数组和函数指针
     (1)指针数组
     指针数组就是由指针组成的数组,即数组中的每一个元素都是指向同一类型对象的指针。
     指针数组可以是全局的、静态的和局部的。字符指针数组和二维字符数组在许多方面是一样的,如初始化形式、成员访问方式,因此我们有必要了解它们的区别和各自的使用场合。
     尽管二维字符数组与字符指针数组在存储形式上不同,但它们在初始化形式以及访问元素方式上却是相同的。
     采用指针数组的理由是:它可以节省存贮空间,因而通常用来存放不同长度的字符串。例如,如果要保存从标准输入或文件中读入的行,字符指针数组是一个好的选择。因为读入的行可能长短差异很大。
     (2)命令行参数
     在C+ +中可以实现带有命令行参数的程序,它是通过main带有参数来实现的。
     在C+ +中,主函数main还可以带有参数,形式如下:
     int main(int argc,char * argv[])
或int main(int argc,char * * argv[])
其中:
     argc为包含命令本身在内的参数个数。
     argc为指针数组,数组元素为指向各参数(包含命令本身在内)的指针。
     (3)函数指针
     在C+ +中,允许指针指向一个函数,即指向函数的指针。函数指针的说明形式为:
       类型(*标识符)();
     例如:int (* fp)();定义了一个指向返回值为整型值的函数的指针fp。
     注意:int(*fp)();与int*fp();的不同在于,前者是函数指针,后者为返回指向int指针的函数。
     与其他类型的指针变量一样,在使用函数指针前必须使它指向一个具体的函数。若要函数指针指向一个具体函数,可通过赋值语句或参数传递。
   &

[1] [2]  下一页


[招考就业]2010年国家公务员考试报考{参考指南}  [招考就业]2010年国家公务员考试备考指南
[Web开发]net在线考试系统如何控制考试时间  [Web开发]asp.net网上考试系统功能介绍
[网页制作]DreamWeaver+Css轻松实现网页段落首行缩进!  [网页制作]DIV+CSS+javascript实现DIV对象显示在页面任何位置…
[网页制作]div+css实现网页模块或栏目拖动(即拖拽效果)  [网页制作]XHTML+CSS兼容性解决方案
[网页制作]网页设计之css+div PK table+css  [网页制作]DIV+CSS三行两列经典布局
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · 电脑应用  · 网络应用
    · 软件开发  · 软件使用
    · 站长学院  · 数据库
    · 应用范文  · 网络书斋
    · 考试认证  · 精彩网文
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台