执行下列 C++ 代码时输出中的第 2 行是( )。
int main()
{
char *s[] = {(char*)"2024", (char*)"3.16", (char*)"GESP"};
for (int i = 0; i < 2; i++) {
cout << *s + i << endl;
}
cout << endl;
return 0;
}答案C。指针和数组的代码追踪:画出变量和指针的内存示意图,追踪每次赋值后值的变化。
指针和数组追踪时画内存布局图可以大大简化理解。
【考点】指针运算|字符串操作|数组指针
本题考查GESP四级C++大纲中"指针与数组"模块的核心能力——指针算术运算。命题人专门设计这道题卡住两类人:一类是混淆s[i]与*s的学生(把数组元素当字符串整体),另一类是忽略指针偏移规则的人(误以为*s+i会跳到下一个数组元素)。四级高频考点,但细节决定成败。