- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章_数组指针与字符串
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 程序运行结束之前,两个对象调用析构函数 Deleting... Destructor called. Destructor called. Deleting...接下来程序出现异常,也就是运行错误 * Array1 points size=2 Array1的数组 元素占用的内存 (10,10) (20,20) points size=2 Array2 * ArrayOfPoints::ArrayOfPoints(const ArrayOfPoints v) { size = v.size; this-points = new Point[size];//申请新的动态内存 for (int i = 0; i size; i++) this-points[i] = v.points[i]; } 主函数关键代码: 用户输入数组长度:count ArrayOfPoints Array1(count); //创建对象 假设count = 2 ,并初始化Array1 ArrayOfPoints Array2 = Array1; //对象拷贝 * Array1 points size=2 Array1的数组 元素占用的内存 (1,1) (2,2) points size=2 Array2 深拷贝 (1,1) (2,2) Array2的数组 元素占用的内存 如果Array1中数组元素坐标发生变化,Array2不变!! * Array1 points size=2 Array1的数组 元素占用的内存 (10,10) (20,20) points size=2 Array2 (1,1) (2,2) Array2的数组 元素占用的内存 程序运行结束之前,两个对象调用析构函数 Deleting... Destructor called. Destructor called. Deleting... Destructor called. Destructor called. 正常结束 * Array1 points size=2 Array1的数组 元素占用的内存 (10,10) (20,20) points size=2 Array2 (1,1) (2,2) Array2的数组 元素占用的内存 浅拷贝 实现指针本身的值复制 深拷贝 实现了指针成员所指向的对象的复制 如果数据成员是指针类型,必须采取深拷贝的方法。 * C:用字符数组存储和处理字符串 字符串常量(例:program) 各字符连续、顺序存放,每个字符占一个字节,以‘\0’结尾 “program”出现在表达式中,表示这一char数组的首地址 首地址可以赋给char指针或者一个字符数组: char *STRING1 = program; char array[] = program; * 字符串 p r o g r a m \0 以下三条语句具有等价的作用: char str[8] = { p, r, o, g, r, a, m, \0 }; char str[8] = program; char str[ ] = program; * p r o g r a m \0 用字符数组表示字符串的缺点 用字符数组表示字符串的缺点 执行连接、拷贝、比较等操作,都需要显式调用库函数,很麻烦 当字符串长度很不确定时,需要用new动态创建字符数组,最后要用delete释放,很繁琐 字符串实际长度大于为它分配的空间时,会产生数组下标越界的错误 解决方法 使用字符串类string表示字符串 string是对字符数组操作的封装类 * string的用法(1) 常用构造函数 string(); //缺省构造函数,建立一个长度为0的串 string(const char *s); //用指针s所指向的字符串常量初始化string类的对象 string(const string rhs); //拷贝构造函数 例: string s1; //建立一个空字符串 string s2 = “ab
文档评论(0)