简单问题1:

needknowledge 2003-08-18 04:48:10
(12) 以下程序的输出结果是【efgh】 。
main()
{ char *p="abcdefgh",*r;
long *q;
q=(long*)p;
q++;
r=(char*)q;
printf("%s\n",r);
}
请详细解释一下这个题目?
谢谢
...全文
38 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
playboyxp 2003-08-18
  • 打赏
  • 举报
回复
你的程序是不断在强制类型转换
先把字符指针转换成long型
然后再转换成字符型指针输出
goldenrock 2003-08-18
  • 打赏
  • 举报
回复
呵,原来long是加4说
GhostAdz 2003-08-18
  • 打赏
  • 举报
回复
严重同意sevecol(看什么看...)
吃透了题目的本意
madasoft 2003-08-18
  • 打赏
  • 举报
回复
char *p="abcdefg";
个人觉得这样用不好。
Jinhao 2003-08-18
  • 打赏
  • 举报
回复
一看就是二级题
myra1200 2003-08-18
  • 打赏
  • 举报
回复
main()
{ char *p="abcdefgh",*r;
long *q;

q=(long*)p; //强制转换,将指向1个字节的指针转换成指向2个字节的指针。此时 *q="cdefgh"

q++;//此时*q="efgh"
r=(char*)q;//强制转换,将指向2个字节的指针转换成指向1个字节的指针。此时 *q="efgh"

printf("%s\n",r);
}
bitcof 2003-08-18
  • 打赏
  • 举报
回复
在两个类型不同的指针之间做强制类型转换是不安全的,应当避免。
#include <iostream.h>

int main()
{
char* p = "abcdefghi";
long* q;

q = (long*) p;
cout << hex << q << endl;

q ++;
cout << hex << q << endl;

return 0;
}
ppm07 2003-08-18
  • 打赏
  • 举报
回复
sizeof(char)=1,sizeof(long)=4
sevecol 2003-08-18
  • 打赏
  • 举报
回复
这个题目的意思我想是说long*类型的指针的++是加上4

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧