标题:关于指针的一个问题
只看楼主
魔城侠客
Rank: 1
等 级:新手上路
帖 子:200
专家分:0
注 册:2006-4-4
结帖率:50%
 问题点数:0 回复次数:2 
关于指针的一个问题

现在有一个程序如下,这个程序我不能理解,谁能给我讲得详细点
void main()
{
char *p="123defgh56",*r;
long *q;
q=(long *)p;
q++;q++;
r=(char *q);
printf("%s",r);
}
程序输出的结果是fgh56,为什么是这样呢

搜索更多相关主题的帖子: 指针 
2006-11-10 15:52
baxia
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-3-10
得分:0 
void main()
{
char *p="123defgh56",*r;//声明指向字符(可以理解为字符串)的指针并初始化;
long *q;
q=(long *)p; //将将指针p强转为 long*型并赋值给q;
q++;q++; //因为q为long*型 所以每次q++ 指针后移4个字节
r=(char *)q;//把q强转为 char*型 //LZ这里写错了.
printf("%s",r);//输出字符串 应该为:56
}

[此贴子已经被作者于2006-11-10 16:05:54编辑过]

2006-11-10 16:04
魔城侠客
Rank: 1
等 级:新手上路
帖 子:200
专家分:0
注 册:2006-4-4
得分:0 
嗯,刚开始我以为q++每次是移2个字节,所以怎么算也不对
现在是了,谢谢啊

West and east,home is best……
2006-11-10 16:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-102021-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.644944 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved