下面 C++ 代码执行后输出是( )。
int arr[3]={1,2,3};
int *p=NULL;
p=arr;
p++;
cout<<*p<<endl;这道题考指针与数组的关系:指针初始指向数组首元素,p++让指针地址加一个元素长度,再解引用即取下一个元素。
学生易把指针自增当成‘跳到数组末尾’,误选D;或混淆‘先取值再自增’,误选B;还有的把指针当数组整体输出,选A。其实p=arr后p已是首元素地址,p++只走一步,指向arr[1],*p就是2。
【考点】指针运算|数组地址传递|自增运算符
GESP四级C++指针基础模块。命题人专门设计这道题卡住‘指针自增’这个高频易错点——四级大纲明确要求掌握指针的加减与自增,但大量考生只背过‘指针指向数组首元素’,对p++的地址偏移量概念模糊,导致误选D或A。