C++笔试题解析与答案

5星 · 超过95%的资源 需积分: 9 154 下载量 131 浏览量 更新于2024-10-03 11 收藏 62KB DOC 举报
"这是一份联创公司的C++笔试题,包含了选择题和可能的编程题目,主要测试考生对C++程序设计语言的理解和应用能力。试题涉及指针与常量的关系、函数指针的初始化、函数参数传递以及结构体的使用等核心概念。" 在C++编程中,指针和常量的交互是非常关键的概念。题目中的第一道选择题探讨了指针和常量指针的使用。A选项中,`const char*pc=s;` 是正确的,因为创建了一个指向字符串`s`的常量指针,意味着不能通过`pc`修改字符串的内容。然而,B选项`pc[3]=’g’;`尝试修改常量指针所指的字符串,这是不允许的,所以是错误的。C选项`pc=p;`是正确的,因为只是改变指针`pc`的值,不涉及对字符串的修改。最后,D选项`char*const cp=s;`定义了一个指向`s`的常量指针,然后尝试`cp[3]=‘a’;`也是错误的,因为`cp`是常量指针,不能改变其指向。 第二道选择题涉及函数指针的初始化。A选项中,`void(*pf)(void*)=reset;`尝试将一个接受`int*`参数的函数赋值给接受`void*`的函数指针,这是不兼容的,因此错误。B选项`int(*pf1)(int,int)=calc;`正确,因为`pf1`和`calc`的类型匹配。C选项`int(*pf3)(int*,int)=compute;`也是正确的,类型匹配。D选项`void(*pf4)(const matrix&) = 0;`尝试将空指针赋值给函数指针,虽然语法上正确,但通常在实际代码中会定义函数指针指向具体的函数,而不是直接设为0。 第三题涉及函数参数的传递。`GetNextCdr`函数需要一个`StdCdr*`类型的指针和一个引用类型的`int`作为参数。由于`x`已经是`StdCdr`类型,因此应该传入`&x`作为第一个参数;而`y`是`int`类型,作为引用传递时不需要取地址,因此第二个参数直接是`y`。所以正确答案是A,即`GetNextCdr(x, &y);`。 第四题涉及结构体的定义。A选项是正确的,定义了一个包含字符串、整数和结构体指针的结构体。B选项中的`StdCdr next;`应该改为`StdCdr*next;`,以表示`next`是一个指向`StdCdr`的指针。C选项是A选项的完整形式,包括分号,也是正确的。 总结来说,这份联创公司的笔试题主要考察了C++中的基本概念,包括指针、常量、函数指针、参数传递和结构体的使用。对于C++程序员来说,这些是必备的知识点,理解和熟练掌握它们对于解决实际问题至关重要。