C/C++面试复习:struct与union内存理解

需积分: 0 0 下载量 147 浏览量 更新于2024-08-05 收藏 1.84MB PDF 举报
本文主要讨论的是C和C++中的基础知识,特别是关于struct和union的数据结构概念。struct在C++中是一种用户自定义的数据类型,它是由若干成员变量按照特定顺序组合而成的,每个成员在内存中是独立存储的,且结构体的大小会根据其内部成员的数据类型和对齐要求来决定。例如,如果包含int(4字节)、short(2字节)、无符号int(4字节)、bool(4字节补足为4字节)、以及struct类型的指针(4字节),总计占用20字节,因为需要满足字节对齐规则,通常是4字节对齐。 另一方面,union在C++中是另一种数据类型,它允许所有成员共享同一块内存空间,只有其中一个成员变量会被激活,其他处于不活跃状态的成员将不会占用额外的存储。当联合后面加上一个ui,如果没有显式指定大小,可能会导致意外的结果,比如联合原本可能只占用4字节,但由于后续添加的元素使整体变大,最终可能占据16字节的空间。这提醒开发者在使用union时要注意内存分配和行为。 文章提到,无论从事哪个岗位,理解这些基础概念都很重要,因为它们在编程实践中广泛存在。作者强调保持兴趣和热情,即使在繁忙的工作中也要找到乐趣,如写博客和学习新技术。同时,文章还提到了编译过程中的预处理、翻译和链接等步骤,指出编译器如何确保变量和函数的定义与引用之间的匹配,避免在运行时出现“未定义”的错误。 此外,文章中还提及了面试中可能会遇到的一些技术问题,例如检查二进制表示中的1的个数、特定算法实现、数据结构的题目等,这些都是对程序员基本功的考验。 这篇文章围绕C和C++的struct和union特性,以及它们在实际编程中的应用场景进行了深入浅出的讲解,旨在帮助读者巩固基础,提升解决问题的能力。无论是求职者还是技术爱好者,理解和掌握这些基本概念都是提高编程技能的关键。