|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 指针问题+函数
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
899
人关注过本帖
标题:
指针问题+函数
只看楼主
加入收藏
语言呆子
等 级:
新手上路
帖 子:53
专家分:0
注 册:2009-4-12
结帖率:
83.33%
楼主
收藏
问题点数:0 回复次数:15
指针问题+函数
int fun(char *p)
{
char *t=p;
while(*t++);
return(t-p-1);
}
main()
{
printf("%d",fun("abc"));
getch();
}
答案是3,怎么会是3,百思不解,请各位大侠帮帮忙了,急呀
搜索更多相关主题的帖子:
函数
指针
2009-10-09 17:06
举报帖子
使用道具
赠送鲜花
xxcc309
等 级:
论坛游民
威 望:
1
帖 子:63
专家分:82
注 册:2007-6-25
第
2
楼
收藏
得分:0
你可以看fun(char *p) 中的
return中的值,t-p需要解释下
可以理解成t指针相对p指针移动的次数,这样你应该可以理解了吧。
努力决定一切 奋斗才是命运
2009-10-09 17:17
举报帖子
使用道具
赠送鲜花
ian116
等 级:
新手上路
帖 子:28
专家分:2
注 册:2009-5-15
第
3
楼
收藏
得分:0
好混乱的感觉啊。反正我是看不懂你的结构,while(*t++);
这是什么?什么时候截止?另外如果你用的是*t++,那不是指针往后指一位,而是指针说指的值+1,也就是说你一直在做1+1+1的加法。虽然不知道你loop到什么时候,但是,结果是数字,不算奇怪。
2009-10-09 17:18
举报帖子
使用道具
赠送鲜花
lansong
等 级:
业余侠客
帖 子:79
专家分:226
注 册:2009-6-11
第
4
楼
收藏
得分:0
int fun(char *p) //假设p=0;
{
char *t=p; //t=p,即t=0;
while(*t++); //直到*t=0结束,这句循环后,4;
return(t-p-1); //4-0-1=3
}
main()
{
printf("%d",fun("abc")); //把字符串"abc"的首地址传给fun中的p
getch();
}
2009-10-09 17:20
举报帖子
使用道具
赠送鲜花
onepc
等 级:
黑侠
威 望:
3
帖 子:223
专家分:569
注 册:2009-8-27
第
5
楼
收藏
得分:0
如楼上所说。这个是死循环。
int fun(char *p)
{
char *t=p;
//t指向abc的地址
while(*t++); //所以*t这里第一次时指的是a ,a++....这个不知要到那时才会0?,不为0的值都while不会退吧?
return(t-p-1);
}
main()
{
printf("%d",fun("abc"));
getch();
}
2009-10-09 17:25
举报帖子
使用道具
赠送鲜花
xxcc309
等 级:
论坛游民
威 望:
1
帖 子:63
专家分:82
注 册:2007-6-25
第
6
楼
收藏
得分:0
回复 5楼 onepc
字符串都是以'\0'结尾的吧,当循环到‘\0’while循环就结束了。
努力决定一切 奋斗才是命运
2009-10-09 17:37
举报帖子
使用道具
赠送鲜花
onepc
等 级:
黑侠
威 望:
3
帖 子:223
专家分:569
注 册:2009-8-27
第
7
楼
收藏
得分:0
注意。这个是 while(*t++); 不是t++
.这个怎么会移动呢??
2009-10-09 17:41
举报帖子
使用道具
赠送鲜花
onepc
等 级:
黑侠
威 望:
3
帖 子:223
专家分:569
注 册:2009-8-27
第
8
楼
收藏
得分:0
或者是++的优先级大于*..这个要去查下才知。
2009-10-09 17:46
举报帖子
使用道具
赠送鲜花
ian116
等 级:
新手上路
帖 子:28
专家分:2
注 册:2009-5-15
第
9
楼
收藏
得分:0
关键是不知道lz什么意思。要值+1,也没见过*t++的,如果要指针移动应该是*(t++)
2009-10-09 17:49
举报帖子
使用道具
赠送鲜花
viky2003
等 级:
职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
第
10
楼
收藏
得分:0
比较简单:
++的优先级比*高,那么首先t指针+1,再算*t,由于是t++,所以*t开始值是 a,为真,
接着循环,分别为 b,c和'\0',而'\0'就是0,循环停止,此时t为'\0'字符位置+1,那么t=p+4
那么return t-p-1就是3.
要练习算法就来http:///!!有挑战哦!!
2009-10-09 19:43
举报帖子
使用道具
赠送鲜花
16
1/2页
1
2
快速回复:
指针问题+函数
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.031895 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved