社区
C++ 语言
帖子详情
关于strlen()与指针常量
小V小V志
2009-12-26 05:53:56
1.
void main()
{
char *str="12345";
cout<<strlen(str)<<"\t"<<sizeof(str);
}
结果为什么是5 、4
而不是6、4
2.
char * const p="ABC";
这个p[0]='B';对吗???
...全文
260
18
打赏
收藏
关于strlen()与指针常量
1. void main() { char *str="12345"; cout<<strlen(str)<<"\t"<<sizeof(str); } 结果为什么是5 、4 而不是6、4 2. char * const p="ABC"; 这个p[0]='B';对吗???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wwwzyb2002
2009-12-28
打赏
举报
回复
[Quote=引用 9 楼 crlystaldong 的回复:]
那请问大家这个
void main()
{
char st[20]="hello\0\t\\\"; // ;前掉了个"号,变量名也不对,应为str
cout < <strlen(str) < <"\t" < <sizeof(str); // 首先 < < 是不对的,其次输出为5 20
}
答案是13.20
为什么??
[/Quote]
总结下:发代码之前请先自个测试下,发结果之前也请实验下,信口雌黄是会误导人的。
cq_gongyoulong
2009-12-28
打赏
举报
回复
strlen(str); ----计算str中出现第一个'\0'位置的长度
比如:
char str[] = "abc\0de";
len1_Str = strlen(str);
len2_Str = sizeof(str);
len1_Str = 3; 而不是等于6.
但是:len2_Str = 7;
yhm9084nerv
2009-12-27
打赏
举报
回复
答案错了,运行了石a,我刚刚试了
bean11222
2009-12-27
打赏
举报
回复
[Quote=引用 13 楼 bearnan 的回复:]
那请问大家这个
void main()
{
char st[20]="hello\0\t\\\";
cout < <strlen(str) < <"\t" < <sizeof(str);
}
答案是13.20
为什么??
答案有点问题呀!是5 20呀!
[/Quote]
这个在VS2005中编译不通过 报错:常量中有换行符 ~~~
bearnan
2009-12-27
打赏
举报
回复
那请问大家这个
void main()
{
char st[20]="hello\0\t\\\";
cout < <strlen(str) < <"\t" < <sizeof(str);
}
答案是13.20
为什么??
答案有点问题呀!是5 20呀!
liubingqian
2009-12-27
打赏
举报
回复
[Quote=引用 8 楼 crlystaldong 的回复:]
引用 2 楼 loaden 的回复:
这个p[0]='A';
书里答案是B的```我不解!!
[/Quote]
尽信书不如不读书,哪个书也不保证无错,更何况现在出版业这么浮躁,录入、校对根本都不负责。
老邓
2009-12-27
打赏
举报
回复
[Quote=引用 9 楼 crlystaldong 的回复:]
那请问大家这个
void main()
{
char st[20]="hello\0\t\\\";
cout < <strlen(str) < <"\t" < <sizeof(str);
}
答案是13.20
为什么??
[/Quote]
楼主可以另开帖子讨论这个问题。
fire123cba
2009-12-26
打赏
举报
回复
共同学习
honghu069
2009-12-26
打赏
举报
回复
[Quote=引用 8 楼 crlystaldong 的回复:]
引用 2 楼 loaden 的回复:
这个p[0]='A';
书里答案是B的```我不解!!
[/Quote]
估计那本书是以TC做编译器...
小V小V志
2009-12-26
打赏
举报
回复
那请问大家这个
void main()
{
char st[20]="hello\0\t\\\";
cout<<strlen(str)<<"\t"<<sizeof(str);
}
答案是13.20
为什么??
小V小V志
2009-12-26
打赏
举报
回复
[Quote=引用 2 楼 loaden 的回复:]
这个p[0]='A';
[/Quote]
书里答案是B的```我不解!!
zxustc
2009-12-26
打赏
举报
回复
1.c风格的字符串以及C++ 标准库中的string类型都以'\0'作为结束的标志,但是调用库函数计算长度时都不计算这个结束的标志。
2.这个p可以理解为数组的首地址,p[0]应该等于'A'
lori227
2009-12-26
打赏
举报
回复
char * const p="ABC"; 这样定义相当于 const char* const p = "ABC";
p[0] = 'B' 出错的
davelv
2009-12-26
打赏
举报
回复
[Quote=引用 4 楼 loaden 的回复:]
sizeof(str); 与 sizeof(char*)是等效的!
[/Quote]
受限声明:当且仅当str是字符串指针而非字符串数组的时候等效
老邓
2009-12-26
打赏
举报
回复
sizeof(str); 与 sizeof(char*)是等效的!
starwalker
2009-12-26
打赏
举报
回复
1. strlen取字符串长度,不包括结尾'\0'
2. 写法不对,但是不一定会出错,要看编译器。
老邓
2009-12-26
打赏
举报
回复
这个p[0]='
A
';
老邓
2009-12-26
打赏
举报
回复
strlen计算时,不包括字符串结束符NULL。
sizeof计算的是指针大小:4byte、
指针常量
和常量指针详解
常量指针 定义:又叫常指针,可以理解为常量的指针,也即这个是指针,但指向的是个常量,这个常量是指针的值(地址),而不是地址指向的值。 关键点: 1.常量指针指向的对象...
指针常量
定义:本质是一个常量,而.
C语言中的常量指针与
指针常量
1. 常量指针与
指针常量
是C语言中两个比较容易混淆的概念: (1) const char* p; (2) char* const p=a; (3) char* p="abc"; (1)式定义了一个常量指针,即指向一个常量的指针,指向的内容是常量,不可修改,放在常量...
C++中常量、引用、指针、常量指针、
指针常量
、常量引用、顶层常量与底层常量
哪个是指针不能变? 哪个是指针指向的对象不能变? 常量 常量const是constant的缩写,本意是不变的,不易改变的意思。const在C++中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。 加了const...
char* a 与 char a[] 以及常量指针,
指针常量
常量指针与
指针常量
常量指针 :指向常量值的指针,指针本身值可变,但是指针所指向的内容不可更改
指针常量
:指针值是一个常量,即指针值不可变,但指针所指向的内容可以变 如:int a = 9; int const * ptr = &a;在...
2. 常量指针和
指针常量
的通俗理解与区分
通过简单对比简要分析常量指针和
指针常量
的区别
C++ 语言
64,648
社区成员
250,503
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章