执行下面 C++ 代码将输出 $10$。
void func(int* p) {
*p = 10;
}
int main() {
int a = 5;
func(&a);
cout << a << endl;
return 0;
}答案A。指针和数组的代码追踪:画出变量和指针的内存示意图,追踪每次赋值后值的变化。
指针和数组追踪时画内存布局图可以大大简化理解。
【考点】指针传递|函数参数|赋值操作
本题考查《GESP 考试大纲》C++ 语言基础模块中的"函数参数传递与指针操作",四级必考。命题人卡住的是绝大多数考生对"指针作为参数时,函数内修改是否影响外部变量"的模糊认知——很多人把指针当成普通变量,以为参数是值传递就不会改原数据。