|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 求一个指针的长度
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
5240
人关注过本帖
标题:
求一个指针的长度
只看楼主
加入收藏
simplelive
等 级:
新手上路
帖 子:17
专家分:0
注 册:2008-2-20
楼主
收藏
问题点数:0 回复次数:22
求一个指针的长度
main()
{char *p="abcde\Ofghjik\0";
printf("%d\n",strlen(p));
}这个程序输出的结果是___.参考答案是12
结束标志'\0',此出是字母'O',还是数字'0'?此题在书上前面\后的字符与后面\后的字符是不同的.如果后面一个是结束字符,为什么答案不是13,'\'算不算字符.如果前面那个是结束字符,答案是不是应该是5.请分析一下.
搜索更多相关主题的帖子:
指针
字符
长度
数字
结束
2008-03-15 22:36
举报帖子
使用道具
赠送鲜花
sunkaidong
来 自:南京师范大学
等 级:
贵宾
威 望:
12
帖 子:4496
专家分:141
注 册:2006-12-28
第
2
楼
收藏
得分:0
#include"string.h"
#include"stdio.h"
main()
{
char *p="abcde\Ofghjik\0";
printf("%d\n",strlen(p));
while(printf("%c",*p)&&*(p++)!='\0');
}
[[it] 本帖最后由 sunkaidong 于 2008-3-15 22:44 编辑 [/it]]
学习需要安静。。海盗要重新来过。。
2008-03-15 22:43
举报帖子
使用道具
赠送鲜花
simplelive
等 级:
新手上路
帖 子:17
专家分:0
注 册:2008-2-20
第
3
楼
收藏
得分:0
求这个程序的运行结果
fun(char *w,int n)
/*我的理解:从下面主函数知道n=7*/
{char t,*s1,*s2;
s1=w;s2=w+n-1;
/*把字符串"1234567"的首地址赋给s1,把w+6赋予s2.*/
while(s1<s2){t=*s1++;*s1=*s2--;*s2=t;}/*s1与s2比较是不是比首地址处字符的ASCII码?t=*s1++是怎么执行的,是先将s1所指的内容赋予t,再s1指向下一个字符?还是先移向下一个字符,再把此字符赋予t呢?)*/
}
main(0
{char *p;
p="1234567";
fun(p,strlen(p));/*我的理解:strlen(p)=7*/
puts(p);
}答案1711717
请分析一下
2008-03-15 22:58
举报帖子
使用道具
赠送鲜花
simplelive
等 级:
新手上路
帖 子:17
专家分:0
注 册:2008-2-20
第
4
楼
收藏
得分:0
(long*)p是什么意思
求程序输出结果
main(0
{char *p="abcdefgh",*r;
long *q;
q=(long*)p; 不懂?是不是取p的内容强制定义?
q++;
r=(char*)q; 不懂?
printf("%s\n",r);
} 答案efgh 分析一下
2008-03-15 23:05
举报帖子
使用道具
赠送鲜花
simplelive
等 级:
新手上路
帖 子:17
专家分:0
注 册:2008-2-20
第
5
楼
收藏
得分:0
(long*)p是什么意思
求程序输出结果
main(0
{char *p="abcdefgh",*r;
long *q;
q=(long*)p; 不懂?是不是取p的内容强制定义?
q++;
r=(char*)q; 不懂?
printf("%s\n",r);
} 答案efgh 分析一下
2008-03-15 23:05
举报帖子
使用道具
赠送鲜花
sunkaidong
来 自:南京师范大学
等 级:
贵宾
威 望:
12
帖 子:4496
专家分:141
注 册:2006-12-28
第
6
楼
收藏
得分:0
t=*s1++;*s1=*s2--;*s2=t这里有问题...你做完之后指针下移了..你的程序我没办法执行
学习需要安静。。海盗要重新来过。。
2008-03-15 23:16
举报帖子
使用道具
赠送鲜花
sunkaidong
来 自:南京师范大学
等 级:
贵宾
威 望:
12
帖 子:4496
专家分:141
注 册:2006-12-28
第
7
楼
收藏
得分:0
#include"string.h"
#include"stdio.h"
void fun(char *w,int n)
{
char t,*s1,*s2;
s1=w;
s2=w+n-1;
while(s1<s2)
{
t=*s1;
*s1=*s2;
*s2=t;
s1=s1+1;
s2=s2-1;
};
}
void main()
{
char p[]="1234567";
fun(p,strlen(p));/*我的理解:strlen(p)=7*/
puts(p);
}
不要用指针了..还是用数组吧...
学习需要安静。。海盗要重新来过。。
2008-03-15 23:17
举报帖子
使用道具
赠送鲜花
sunkaidong
来 自:南京师范大学
等 级:
贵宾
威 望:
12
帖 子:4496
专家分:141
注 册:2006-12-28
第
8
楼
收藏
得分:0
(long*)p是什么意思
求程序输出结果
main(0
{char *p="abcdefgh",*r;
long *q;
q=(long*)p; //把它转化为long指针
q++;//以long的方式下移四个字节
r=(char*)q; //在转化回来
printf("%s\n",r);//字符串..到结尾结束
} 答案efgh 分析一下
学习需要安静。。海盗要重新来过。。
2008-03-15 23:22
举报帖子
使用道具
赠送鲜花
hoodlum1980
来 自:浙江大学
等 级:
论坛游民
威 望:
2
帖 子:289
专家分:23
注 册:2008-2-24
第
9
楼
收藏
得分:0
[bo]以下是引用 [un]simplelive[/un] 在 2008-3-15 22:36 的发言:[/bo]
main()
{char *p="abcde\Ofghjik\0";
printf("%d\n",strlen(p));
}这个程序输出的结果是___.参考答案是12
结束标志'\0',此出是字母'O',还是数字'0'?此题在书上前面\后的字符与后面\后的字符是不同的.如果后面一个是 ...
我还是没有敢想当然,实际的运行了一下,发现输出结果是strlen(p)=5.也就是说\0中的\被当作转义的意思,因此这里的\0代表的是“null”,也就是值0。
2008-03-15 23:25
举报帖子
使用道具
赠送鲜花
hoodlum1980
来 自:浙江大学
等 级:
论坛游民
威 望:
2
帖 子:289
专家分:23
注 册:2008-2-24
第
10
楼
收藏
得分:0
[bo]以下是引用 [un]sunkaidong[/un] 在 2008-3-15 23:22 的发言:[/bo]
(long*)p是什么意思
求程序输出结果
main(0
{char *p="abcdefgh",*r;
long *q;
q=(long*)p; //把它转化为long指针
q++;//以long的方式下移四个字节
r=(char*)q; //在转化回来
printf("%s\n",r);//字符串..到结尾结束 ...
因为sizeof(long)=4,所以q++相当于q移动了4个字节,而sizeof(char)=1。因此指针移动到了第5个字符e的位置。所以打印出来的就是efgh了。如果你把上面的指针类型从long*改为int*,那么在16位下,int是2字节的,将会打印出来的就是“cdefgh”了。
[[it] 本帖最后由 hoodlum1980 于 2008-3-15 23:30 编辑 [/it]]
2008-03-15 23:28
举报帖子
使用道具
赠送鲜花
23
1/3页
1
2
3
快速回复:
求一个指针的长度
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.038138 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved