问题 单项选择题

若有如下程序:
#include <iostream>
using namespace std;
int main()

char *p="abcdefgh",*r;
long *q;
q=(long *)p;
q++;
r=(char *)q;
cout<<r<<end1;
return 0;

上述程序的输出结果是( )。

A.abcdefgh

B.0

C.abcd

D.efgh

答案

参考答案:D

解析: 本题定义了一个字符型指针变量p,并通过赋初值让它指向了一个字符串。还定义了另一个字符型指针变量r和一个长整型指针变量q。首先通过语句“q=(long*)p;”,把p的地址值强制转换为长整型地址值并赋值给q,然后执行“q++;”,地址值增加了4,执行语句“r=(char*)q;”,把长整型指针变量q的值再强制转换成字符型地址值并赋给r,r的值应为字符串中字符“e”的地址。最后输出r指向的字符串。

单项选择题
单项选择题