- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 数据类型的扩展 (数组、结构、枚举) 5.1.5 指针与数组 C++中,指针与数组有着密切的关系。数组名本身就是一个指针(指针常量),对数组元素的引用既可采用下标形式,又可采用指针形式。反过来,指针也可当作数组来使用。 1 数组元素的指针表示法任何一个数组,其元素除了可以用下标形式来表示外,还可以用指针形式来表示。 2. 指向数组的指针 指针也可以直接当成数组来用: 3. 指针数组 4. 变量的动态分配与释放 C++程序运行时可以在内存自由区(堆)使用new运算符和delete运算符动态创建和删除变量。动态变量用指针访问。 (1) new运算符 如果创建的是一个普通变量,初始化过程可以用初值为变量赋值。如果创建的是一个数组,则只是为该数组分配存储空间。 若变量创建成功,new运算符返回一个指向新创建变量的指针,程序中可以通过该指针对变量进行访问。如果创建失败,则返回空指针(NULL)。 new运算符举例 new运算符举例 (2) delete运算符 删除用new创建的数组的格式为: delete[ ] 指针名; 例如: char *cPtr ; cPtr = new char[20] ; delete[ ] cPtr ; new运算符的功能是动态分配内存,返回一个指向新分配内存首地址的指针,其格式为: new 类型 [(初值)];//创建变量。 new 类型 [下标] ;//创建数组。 例如, 用new运算符创建变量: int* ptr; ptr=new int(100); 或: ptr=new int; *ptr=100; 又如,用new运算符创建数组: char* name; name = new char[10] ;// 创建char型数组 以上两句可以合并成: char* name = new char[10] ; 删除用new创建的变量语法格式为: delete 指针名; 例如: double *dPtr ; dPtr = new double(7.14) ; delete dPtr ; delete运算符的功能是用来删除使用new创建的变量或数组的指针。 5.2 结构类型 5.2.1结构的定义和访问 结构是C++为了C语言向后兼容而保留的一种数据类型。 与数组只能定义同类型数据集合不同,结构可以定义一组意义相关、类型不同的数据的集合。结构定义关键字是struct。 结构定义格式: struct 结构名 { 类型1 结构成员1; 类型2 结构成员2; …; }; 例如: struct Teacher { long int id; // char name[10] int age; int sex; }; 结构是一个形体,它定义了一个纪录格式。 结构定义后,可以声明结构变量或指向结构的指针,如: Teacher Chen; Teacher *tp; tp=new Teacher; 结构变量是实体 声明结构变量即为该结构的纪录实体分配内存。 struct Teacher { long int id; char name[10] int age; int sex; }; Teacher Chen, *tp; 结构成员用成员访问运算符“.”或“-”进行访问,如: Chen.id=1308633; tp-age=24; strcpy( Chen.name, “Chenkun”); couttp-name“,”tp-ageendl; 也可以在定义结构类型的同时定义结构变量。例如: struct Teacher { long int id; char name[10] int age; int sex; }Chen, *tp; 5.2.2 结构与链表 结构定义可以嵌套,即一个结构中的成员可以是另一个结构,如: struct Address { char city[12]; char street[20]; char phone_No[8]; }; struct Teacher { long int id; // char name[10] int age; int sex; Address home; //结构的嵌套 }; 访问嵌套的结构成员,应逐层使用访问运算符,如: Teacher Wang; Strcpy(Wang.home.city
文档评论(0)