| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 610 人关注过本帖
标题:[求助]字符串,指针问题
只看楼主 加入收藏
夜子
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2007-10-2
收藏
 问题点数:0 回复次数:7 
[求助]字符串,指针问题


#include<iostream>
#include<string>
using namespace std;
int main()
{

char s[]="123\t456\06589",*p=s; //p指向s的第一个字符,\t是一个字符
cout<<*(p+5)<<endl; //p做+5运算再解引用,123\t45(012345)得5
cout<<(p+5)<<endl;
cout<<strlen(p)<<endl;
cout<<sizeof(s)<<endl;
cout<<sizeof(p)<<endl;
cout<<sizeof(*p)<<endl; //strlen(s)为2个,因为\0原因sizeof(s)不考虑中间的\0的截断


cout<<(p+8);
return 0;
}
请大家帮忙看下这些输出结果是怎么得来的。谢谢了哦

搜索更多相关主题的帖子: 指针 字符 
2007-10-06 16:01
snipered
Rank: 1
等 级:新手上路
威 望:1
帖 子:90
专家分:0
注 册:2007-10-5
收藏
得分:0 
我只看的出值为假。
顶上去再说!

2007-10-08 16:16
风之梦
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2007-8-31
收藏
得分:0 
    偶也不明白呀
2007-10-08 20:06
风之梦
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2007-8-31
收藏
得分:0 
但是如果把那两个转义字符给去掉,我就明白了,你回去把转义字符复习一下
2007-10-08 20:09
rediums
Rank: 2
等 级:新手上路
威 望:3
帖 子:367
专家分:0
注 册:2007-7-29
收藏
得分:0 
char s[]="123\t456\06589"
\065 代表数字5,所以上面这句可以写成:char s[]="123\t456589"

2007-10-08 20:27
reedleaf
Rank: 2
等 级:新手上路
威 望:3
帖 子:62
专家分:0
注 册:2007-8-5
收藏
得分:0 

#include<iostream>
#include<string>
using namespace std;
int main()
{

char s[]="123\t456\06589",*p=s; //p指向s的第一个字符,\t是一个字符
cout<<p<<endl; //输出:123 456589
// \t Horizontal tab
// \ooo ASCII character in octal notation
//所以 \065(八进制) 查ASCII表输出5
//上面理解了,以下就简单了
cout<<*(p+5)<<endl; //p做+5运算再解引用,123\t45(012345)得5
cout<<(p+5)<<endl;
cout<<strlen(p)<<endl; //不考虑'\0'
cout<<sizeof(s)<<endl;
cout<<sizeof(p)<<endl; //p为指针 所以输出4
cout<<sizeof(*p)<<endl; //*p为字符 输出1


cout<<(p+8);
return 0;
}


2007-10-08 22:37
夜子
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2007-10-2
收藏
得分:0 
呵呵。多谢阿。

2007-10-11 12:59
jonc
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2007-3-25
收藏
得分:0 

路过
学习学习
顶下


菜鸟也想高飞
2007-11-02 17:04
快速回复:[求助]字符串,指针问题
数据加载中...
 
   



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

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