小杨使用指针修改计数器的值。执行下面程序后,输出结果是( )。
int count = 8;
int *p = &count;
*p += 4;
cout << count << " " << *p;
return 0;指针题目先定位指针指向的变量,再看解引用操作是否修改原变量。本题p指向count,*p+=4是解引用后对count值做加法,count和*p都变12,输出两个12。
A选项误以为指针运算不修改原变量;B选项只看到*p变化而忽略count同步更新;D选项混淆count与*p的指向关系。最阴险细节是*p+=4,学生易误判为指针地址运算(p+=4)而非值运算,导致错误认为count不变。
本题考查GESP四级C++模块"指针与引用"中的解引用与指针运算。命题人卡住的是学生混淆"指针本身"与"指针指向的变量"——四级考生普遍知道取地址符&和解引用符*,但很少意识到解引用后的赋值会直接修改原变量。
看到题先定位:p=&count,p指向count。关键观察:*p+=4是解引用p得到count的值,加4后赋回count,因此count从8变为12。输出时cout<<count输出12,cout<<*p再次解引用p仍得到12。这一类题通法:先画指针指向关系图,再判断操作是修改变量还是修改变量地址。