C/C++面试题集锦:实战解析与答案

需积分: 0 1 下载量 181 浏览量 更新于2024-08-01 1 收藏 353KB DOC 举报
这段内容主要涉及两个C/C++编程方面的面试题及其解答。首先,第一个问题是关于指针和数组赋值的题目。程序中定义了一个整型变量`a`和一个指向`a`的指针`p`。通过`*p=0x500`,指针`p`被赋予了一个地址并将其指向的内存位置设置为`0x500`。然后,`a`被赋值为`*(&p)`,即取`p`的地址内容,由于`p`指向`a`,所以两次赋值的结果是相同的,`a`的值与`p`相同,都是`0x500`。因此,`if`条件判断`a == (int)p`成立,输出结果为"equal!"。 第二个问题是关于结构体和数据类型的题目。首先,`sizeof(struct bits)`是一个正确的表达式,因为它计算的是`struct bits`类型的存储占用空间。结构体`bits`定义了8个二进制位的字段,虽然它们都被声明为`signed int`,但因为是位域(bit fields),实际占用的空间会比8个`int`的总和小,具体大小取决于编译器的实现。在标准情况下,这个结构体在32位系统上可能占4个字节(32位系统中`int`通常占4个字节)。然后,`struct bit`的定义被修正为`typedef`形式,使其成为一个新的类型名,便于后续使用。如果将`int`类型改为`char`,每个字段将占用1个字节,所以`sizeof(struct bit)`在32位系统上会变为8个字节。 这两个问题考察了面试者对C/C++基本概念的理解,包括指针、内存操作、数据类型和结构体的特性,以及`sizeof`运算符的使用。理解这些问题有助于面试者展示他们的基础扎实程度和解决问题的能力。同时,也提醒应聘者在面试时要注意不同编译器可能带来的差异,这在实际工作中是非常重要的考虑因素。