执行下面程序后,变量 a 的值为 15 。
int a = 10;
int *p = &a;
*p += 5;先定位 a 初值为 10,再确认 p 指向 a 的地址,最后看 *p += 5 是解引用后对 a 做加法,等价于 a += 5,算得 a 最终为 15,与题干一致,选 A。
把 *p += 5 当成 p += 5 或 p = 5,误以为地址变了;混淆指针与它所指的变量;算术错误把 10+5 算错;误读题干问的是 a 的值而非 p 的值。
本题考查 GESP 四级大纲中「指针」模块的核心能力:指针定义、取址符&、解引用符*、指针运算。命题人卡住的是考生对「*p」语义的混淆——很多人看到指针就只想到地址,却忘了解引用后操作的是原变量。
int a = 10; 直接给出 a 的初始值 10。int *p = &a; 把 a 的地址赋给 p,p 指向 a。*p += 5; 解引用 p 得到 a,执行 a += 5,a 变为 15。