测试504
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
100.4 结构体struct和共同体union(联合)的区别 结构体:将不同类型的数据组合成一个整体,是自定义类型 共同体:不同类型的几个变量共同占用一段内存
Байду номын сангаас
1)结构体中的每个成员都有自己独立的地址,它们是同时存在的; 共同体中的所有成员占用同一段内存,它们不能同时存在; sizeof(struct)是内存对齐后所有成员长度的总和,sizeof(union)是内存对齐后最长数据成员的长 度 100.5 引用与指针 引用&:就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 (1)引用的目的主要用于在函数参数传递中,解决大块数据或对象的传递效率和空间不如意的问题 。 (2)用引用传递函数的参数,能保证参数传递中不产生副本,提高传递的效率,且通过const的使用 ,保证了引用传递的安全性。 (3)引用与指针的区别是,是任何对于引用参数的处理都会通过一个间接寻址的方式操作到主调函 数中的相关变量。而对于指针传递的参数,如果改变被调函数中的指针地址,它将影响不到主调函数 的相关变量。 100.6 深拷贝和浅拷贝的区别 浅拷贝:拷贝后两者共用一块空间,在多个对象指向一块空间的时候,释放一个空间会导致其他对象 所使用的空间也被释放了,再次释放便会出现错误 深拷贝:先给需要拷贝的对象开辟空间,再将内容拷贝过去 拷贝构造函数/自定义深拷贝构造函数,两个类之间需要A = B拷贝 100.7 栈溢出的原因以及解决方法 1)函数调用层次过深,每调用一次,函数的参数、局部变量等信息就压一次栈 2)局部变量体积太大。 解决办法大致说来也有两种: 1> 增加栈内存的数目;增加栈内存方法如下,在vc6种依次选择Project->Setting->Link,在 Category中选择output,在Reserve中输入16进制的栈内存大小如:0x10000000 2> 使用堆内存;具体实现由很多种方法可以直接把数组定义改成指针,然后动态申请内存;也可以把 局部变量变成全局变量 100.8 调试程序:windows下vs的debug;linux下gdb 100.9 extern“C” 加上后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。 100.10 delete与delete[] 在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存 空间的时候用 delete[]