下列关于结构体初始化的写法,正确的是( )。
答案B。根据编程知识分析判断。
仔细审题,注意限定词和否定词。用排除法缩小选项范围。
【考点】结构体定义|结构体初始化|聚合初始化
本题考查《GESP 四级 C++ 大纲》中"基本数据类型—结构体"章节的语法规范。命题人特意设置"括号 vs 花括号"的形似陷阱,卡住那些只背了"结构体用花括号"但没理解聚合初始化本质的考生。
看到结构体定义后,先锁定"初始化"动作。C++ 规定聚合初始化必须用花括号 {},这是语言层面的硬性规则。A 的圆括号是函数调用或元组语法,C 的 new 返回指针而非对象,D 的尖括号根本非法。排除法立刻锁定 B。
A 项用圆括号是函数调用语法,C++ 里结构体聚合初始化只能用花括号;C 项 new 返回指针,不能赋值给非指针对象;D 项尖括号连编译器都不会认。这三个都是"看起来像初始化"的伪选项,专门针对会背结论但没摸过键盘的选手。
如果把结构体改成有构造函数,C 项就合法了(但仍是指针);若去掉构造函数且是 POD,B 项依然正确。命题人想考的是"聚合初始化"这一特定语法,而非泛泛的"怎么创建对象"。