第 1 题
题目: 以下代码能正确初始化指针。
int a = 5; int *p = a;
答案: 错
解析: 指针变量存储的是地址,不能直接赋值给整型数值。a 是整型值,p 是指针。正确的写法应该是将 a 的地址赋给 p,即 int *p = &a;。
第 2 题
题目: 执行下面代码将输出 11。
int x = 10; void f() { int x = x + 1; cout << x << endl; }
答案: 错
解析: 在函数 f() 内部定义的局部变量 x 会遮蔽外部同名的 x。在初始化表达式 int x = x + 1; 中,右侧的 x 指的是当前正在初始化的局部变量本身,此时该变量尚未初始化,属于未定义行为(Undefined Behavior),无法预测输出结果,更不会是 11。
第 3 题
题目: 以下 C++ 代码合法。
struct Student { string name; int age; float score; }; Student* students = new Student[20];
答案: 对
解析: 这是使用 new 运算符动态分配对象数组的标准写法。Student* students 声明了一个指向 Student 结构体的指针,new Student[20] 在堆上分配了 20 个 Student 对象的空间并返回首地址。语法合法且常见。
第 4 题
题目: 执行下面代码将输出 10。
void func(int* p) { *p = 10; } int a = 5; func(&a); cout << a;


