求字符串长度的问题(sizeof)

#include"stdafx.h"#include<iostream>usingnamespacestd;int_tmain(intargc,_TCHAR*argv[]... #include "stdafx.h"
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
char *p="hello";
cout<<sizeof(p);
return 0;
}
为什么输出为4
为什么不是我想求的hello这个字符串的长度呢?谢谢
我想求字节数哦 如果规定只能用sizeof 呢?
展开
 我来答
songwanqiang
推荐于2017-10-09 · TA获得超过2399个赞
知道小有建树答主
回答量:603
采纳率:0%
帮助的人:933万
展开全部
说白了,sizeof是求类型的大小,不管是表达式还是后面直接加类型;换种说法是在其后表达式在内存中占用的字节。
p是char *类型,当然是4字节。

你改为char p[] = "hello";
这就是后面字符串的长度。
或者
用strlen函数

要是规定只能用sizeof,那就这样写。
int size = 0;
while(*p++)
size += sizeof(*p);
没什么意义,这样的代码写出来让人笑话。
jun871216
2010-07-26 · TA获得超过347个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:0
展开全部
首先你要明确sizeof到底是干什么的?用来求变量占用的空间大小
sizeof(p);求得是指针p的大小,不管你上面是任何类型,任何字符串,都是4,因为指针的空间大小就是4;
char *p="hello";//改成char p[]="hello";
cout<<sizeof(p);//结果是6,字符串后面还有个'\0'字符
cout<<strlen(p); //结果是5,忽略此字符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-07-26
展开全部
cout<<strlen(p);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式