在C++中,char *s,sizeof(s)和strlen(s)有什么不同啊?

 我来答
七七七的0E6
推荐于2016-08-18 · TA获得超过652个赞
知道答主
回答量:253
采纳率:0%
帮助的人:268万
展开全部
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。
sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。

char aa[10];cout<<strlen(aa)<<endl; //结果是不定的   
char aa[10]={'\0'}; cout<<strlen(aa)<<endl; //结果为0   
char aa[10]="jun"; cout<<strlen(aa)<<endl; //结果为3   
而sizeof()函数返回的是变量声明后所占的内存数,不是实际长度。   
sizeof(aa) 返回10   int a[10]; sizeof(a) 返回40
追问
char aa[10];cout<<strlen(aa)<<endl; //结果是不定的 
为什么啊
追答
因为是要遇到\0才判断结束,这里的aa[10]只是声明了一个10位的字符数组,但是还没有赋值,里面还是空的,没有\0的存在,所以不能确定长度,只有赋值之后才能确定长度
流星梦阳
2011-10-13 · TA获得超过468个赞
知道小有建树答主
回答量:134
采纳率:0%
帮助的人:169万
展开全部
sizeof(s)=sizeof(char*)这个求的是s这个指针的长度结果是4字节,即32位的二进制数
char* s=char s[N],strlen(s)求的是s[N]这个字符串的长度 结果是N
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mengzhong1023
2011-10-13 · TA获得超过243个赞
知道答主
回答量:195
采纳率:100%
帮助的人:105万
展开全部
追问char aa[10];cout<<strlen(aa)<<endl; //结果是不定的
为什么啊
回答因为是要遇到\0才判断结束,这里的aa[10]只是声明了一个10位的字符数组,但是还没有赋值,里面还是空的,没有\0的存在,所以不能确定长度,只有赋值之后才能确定长度

定义之后 初始化 很重要啊,最好在定义变量时候都初始化,赋值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wind2031
2011-10-13 · TA获得超过137个赞
知道小有建树答主
回答量:321
采纳率:0%
帮助的人:189万
展开全部
定义一个字符串指针S
指针S的数据类型长度
S所指字符串长度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式