以下函数执行后,变量a的值会发生什么变化? void modify(int *p) { int x = 10; p = &x; } int main() { int a = 5; int *ptr = &a; modify(ptr); return 0; }

答案解析

核心考点:指针参数传递的副本特性。 解题思路分析: 1. 函数参数传递本质是值传递,指针变量作为参数时传递的是地址的副本 2. 在modify函数内修改形参p的指向(p = &x),不会影响main函数中的ptr 3. x是局部变量,函数返回后其内存空间被释放 选项分析: A. 错误:函数内仅修改了形参指针的指向,未通过*p修改内存内容 B. 错误:ptr的指向地址不会改变,因为传递的是地址副本 C. 正确:实参ptr的指向未改变,a的值始终为5 D. 错误:程序行为是确定的,不存在未定义行为 易错点提醒: 混淆指针变量本身和指针指向内容的修改差异,注意形参指针的修改不影响实参
正确答案:C
随机推荐
开始刷题