关于结构体初始化,以下哪个选项中正确的是( )。
struct Point {int x,y;};答案B。根据编程知识分析判断。
仔细审题,注意限定词和否定词。用排除法缩小选项范围。
【考点】结构体定义|聚合初始化|C++基础语法
🎯 考纲定位:位于GESP四级《基础语法》模块,专门考察结构体成员列表的初始化规则。命题人刻意将括号与花括号混排,就是要卡住那些只会背"数组用花括号"的考生——他们误以为所有复合类型初始化都要用括号。
🧠 解题思维:看到结构体先想成员列表,发现Point只有两个int成员,天然符合聚合初始化条件。排除法依次验证:new是动态内存分配语法,< >是模板/右值引用符号,只有{ }能直接对应成员赋值。这一类"复合类型初始化"题的通法始终是:先确认是否为聚合类型,再匹配对应初始化器。
🪤 陷阱拆解:A选项括号是构造器语法的误用,C选项new是动态分配陷阱,D选项< >是模板/右值引用符号的视觉混淆。最阴险的是命题人利用"括号=参数列表"的固有认知,让考生误以为结构体初始化需要括号。若只背结论不深究聚合类型本质,必然掉进这个语义陷阱。
🔄 反命题思维:如果把结构体改成有构造函数,正确答案就会变成A;如果把Point改成数组,正确答案就是B(花括号)。刷到类似题先问自己:命题人想考我什么——是聚合类型还是构造语法。