- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 数组-指针-字符串
第六章 数组、指针和字符串 数组 指针 字符串 6.1 数组 数组的说明与使用 数组:具有一定顺序关系的若干对象的集合体,组成数组的对象称为该数组的元素。 声明格式:数据类型 数组名[常量表达式1][常量表达式2]… 同一数组的各个元素具有相同的类型 如:int b[10] //存放10个数的数组,b[0]…b[9] 数组 数组的使用 使用数组时,只能对数组的各个元素进行操作 元素的使用形式 数组名[下标表达式1][下标表达式2]…[下标表达式n] 其中n表示数组的维数 注意事项: 下标必须为整型表达式 下标不得越界 A[x][y]不能写成A[x,y] 举例S6_1,数组的使用 数组 数组的存储 数组元素在内存中是顺序、连续的存储 例如:int M[2][3] 存储图示: int M[2][3][4] 存储图示: 数组 数组的初始化 对于简单类型的数组,初始化就是给数组元素赋值; 对于对象数组,每个元素都是某个类的一个对象,初始化就是调用该类对象的构造函数。 例如: int a[3]={1,2,3} //a[0]=1,a[1]=2,a[2]=3 int a[ ]={1,2,3} //与上面语句等价 float fa[5]={1.0,2.2,3.3} //只对前三个数据初始化 float fa[5]={1.0,,,2.2,3.3} //只对三个数据初始化 int a[2][3]={1,2,3,4,5,6} int a[ ][3]={1,2,3,4,5,6} int a[ ][3]={{1,2,3},{4,5,6}} int a[2][3] ={{1,2,3},{4,5,6}} 数组 数组作为函数参数 数组元素和数组名都可作为函数的参数。 数组元素作为调用函数时的实参,与使用该类型的变量做实参完全一样。如果是对象数组,则数组元素是对象。 如果使用数组名作为参数,则实参和形参都应该是数组名,这种情况下传递的是地址。所以实参数组元素的个数不应少于形参数组元素的个数。如果在被调函数中改变数组元素的值,则主调函数中相应元素的值被改变。 举例:S6_2 数组 对象数组:类名 数组名[常量表达式] 对象数组元素的公有成员的访问: 数组名[下标].成员名 对象数组的初始化和析构 就是对每一个元素对象调用构造函数和析构函数的过程。 如果在定义对象数组时给每个元素指定显式的得初始值,就会调用相应有形参的构造函数初始化每个元素 Point A[3]={Point(0,0),Point(1,1),Point(4,5)} 如果没有指定初始值,就会调用缺省的构造函数 注意设计类的构造函数时要充分考虑数组元素初始化的需要 当一个数组元素对象生存期结束时,系统调用析构函数 举例:S6_3 6.2 指针 指针变量是用于存放内存单元地址的变量 指针也是C++动态内存分配和管理的机制 指针 指针变量 指针也是一种数据类型 指针变量是用于存放内存单元地址 通过变量名访问一个变量是直接的,而通过指针变量访问一个变量是间接的 指针变量也必须先声明,后使用 声明形式:数据类型 * 标识符; 如: int * i_pointer //声明一个指向int型的指针 指针 与地址相关的运算 “*”--指针运算符(dereference),是一元操作符,表示指针所指向的内存单元所存储的值。 “”--取地址运算符,也是一元操作符,用来得到一个对象的地址 “*”和“”在声明语句中和执行语句中含义不同。 int a,b; int *pa,*pb=b; pa=a; *pa=8; cin*pa; 指针 指针的赋值 指针必须先赋值然后才能引用 两类赋值格式: 在声明指针变量的同时进行初始化 数据类型 *指针名 = 初始地址 在声明之后,可使用赋值语句对指针变量进行赋值 指针名 = 地址 数组的起始地址就是数组的名称,所以,可以: int a[10]; int *i_p=a; 举例:S6_4 指针 关于指针类型的几点说明: 可以声明指向常量的指针。不能通过指针来改变所指对象的值,但指针本身可以改变,可以指向另外的对象。 const char*name=John; char s[ ]=abc; name=s; *name=1;//错误 可以声明指针类型的常量,这时指针本身的值不能被改变。 Char *const name2= John; name2=abc;//错误 空指针:int *p; p=0;//不指向任何地址,p当前是个空指针。 空指针用途:当某个地址值当前无法取得时,先将指针置为空,避免破坏内存中的内容。 指针 关于指针类
文档评论(0)