| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 467 人关注过本帖
标题:关于指针的一个问题
只看楼主 加入收藏
魔城侠客
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
快速回复:关于指针的一个问题
数据加载中...
 
   



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

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