若有如下程序段: #include<iostream> using namespace std; int main() { char*p="abcdefgh",*r; long*q; q=(long

admin2009-02-15  46

问题 若有如下程序段:
   #include<iostream>
   using namespace std;
   int main()
   {
      char*p="abcdefgh",*r;
      long*q;
     q=(long*)p;q++;
     r=(char*)q;    ’
     cout<<r<<endl;
     return 0;
   }
   该程序的输出结果是【  】。

选项

答案efgh

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

最新回复(0)