C语言结构体课堂抢答题

得分: 0/10

1. 下列关于结构体的定义,哪一个是正确的?




正确答案是B。A选项定义了一个匿名结构体变量point,但没有定义结构体类型;C选项语法错误;D选项没有指定成员的数据类型。

2. 如何正确声明一个结构体变量?




正确答案是A。A选项在定义结构体类型的同时声明了变量s;B选项缺少struct关键字;C选项不完整;D选项需要先定义Student结构体类型。

3. 如何访问结构体成员?




正确答案是B。对于普通结构体变量,使用.运算符访问成员;->用于指针访问成员;::是C++中的作用域解析运算符;直接使用成员名是错误的。

4. 以下代码的输出是什么?
struct Point {int x; int y;};
struct Point p = {10, 20};
printf("%d", p.x + p.y);




正确答案是C。结构体p的x成员值为10,y成员值为20,相加结果为30。

5. 结构体变量可以作为函数参数吗?




正确答案是C。结构体变量可以作为函数参数,既可以值传递也可以指针传递。值传递会复制整个结构体,指针传递更高效。

6. 以下关于结构体数组的说法,哪一个是正确的?




正确答案是A。结构体数组的所有元素必须是相同类型的结构体,可以初始化,且结构体成员可以是任何有效类型包括数组。

7. 如何正确初始化一个结构体?




正确答案是A。C语言结构体初始化使用花括号{},按照成员定义的顺序提供初始值。B选项缺少花括号;C和D的语法在C语言中不适用。

8. 以下关于结构体指针的说法,哪一个是错误的?




正确答案是C。结构体指针可以直接指向已存在的结构体变量,不一定需要动态分配内存。A、B、D选项都是正确的描述。

9. 以下代码的输出是什么?
typedef struct {int x; int y;} Point;
Point p1 = {1, 2};
Point p2 = p1;
p2.x = 3;
printf("%d", p1.x);




正确答案是A。结构体赋值是值复制,p2是p1的副本,修改p2不会影响p1。

10. 结构体可以包含自身类型的成员吗?




正确答案是D。结构体不能直接包含自身类型的成员(会导致无限递归),但可以包含指向自身类型的指针成员。