简单问题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);
}
请详细解释一下这个题目?
谢谢
...全文
47 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
适合人群:具有JAVA编程基础,但是无法写出优雅程序的程序员,希望在系统设计、代码开发上有所提升的人群学习计划:1、建议每天学习3节课,2天就可以学完 2、利用1个小时的时间集中学习,可一口气学完。 3、课后要进行练习,并在工作中加以利用。课程目标:快速掌握7大设计原则,写出高质量的优雅代码课程简介:为什么要学习本门课程?1、程序编写没有原则,按照逻辑胡乱堆砌代码,导致代码冗余,耦合性高,难以维护。2、不知道程序设计应该遵从哪些原则,如何写出优雅代码。3、不知道怎样提高程序的可重用性、可读性、扩展性、可靠性,让程序高内聚而低耦合。 课程特点:1、简单、快速,结合理论和UML、代码进行讲解,学起来不累。2、完整涵盖7大设计原则:①单一职责原则 ②接口隔离原则 ③依赖倒置原则 ④里式替换原则 ⑤开闭原则 ⑥迪米特法则 ⑦合成复用原则3、短小精悍,语言朴实,没有废话,直击重点4、资料齐全,可随时复习和查阅。 主体大纲:7大设计原则1-引言7大设计原则2-单一职责原则7大设计原则3-接口隔离原则7大设计原则4-依赖导致原则7大设计原则5-里式替换原则7大设计原则6-开闭原则7大设计原则7-迪米特法则7大设计原则8-合成复用原则7大设计原则9-总结语 授课风格:1、一线大厂架构师授课2、短小精悍,语言朴实,没有废话,直击重点 配套福利:1、高清正版PDF课件 常见问题:问:是否晦涩难懂,太过于理论化答:采用平实的语言,结合简单的UML推行,再加上代码进行讲解。 简单易学问:是否啰嗦冗长,学起来费时间。答:精简通俗,直击重点,集中时间1小时学完。

69,381

社区成员

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

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