在C语言求字符长度的问题,strlen与sizeof怎么计算出来的长度不是我们理解的那样?

如图所示:我认为strlen的中国应该是4个字符,sizeof后的中国应该是5个字符才是,应该还有一个\0strlen的ZG应该是2个字符,sizeof后的ZG应该是3个... 如图所示:我认为strlen的中国应该是4个字符,sizeof后的中国应该是5个字符才是,应该还有一个\0
strlen的ZG应该是2个字符,sizeof后的ZG应该是3个字符才是,应该还有一个\0
可是运行的结果与我想的有差异,请大家指点一下,谢谢
假如我想直接计算出来这两个字符串的长度与分配长度,应该怎么使用strlen和sizeof函数呢?这里我该如何输出字符指针所指向的字符串呢?为什么指针就求不了字符串?我知道用字符数组可以求,但是字符指针呢?该如何用sizeof来求得呢?
展开
 我来答
lyz810
2013-12-22 · 知道合伙人互联网行家
lyz810
知道合伙人互联网行家
采纳数:7531 获赞数:31779
前端开发工程师

向TA提问 私信TA
展开全部
sizeof(p)计算的是p变量的大小
由于p是指针,p的大小就是4字节,它不是求内容的长度,而是变量p本身的大小
同理q指针也一样
你可以试一下将指针指向的内容长度再增长,sizeof(p)仍然是4
字符指针:分配长度用strlen计算后+1
如果算数组分配长度(数组声明时的空间大小,不管字符数组是否填满)用sizeof

注意:回答内容已修改,你自己看回答内容的改变,好好找一下,回答中就有
提示:请使用追问功能,否则你补充提问后我再补充回答,你可能找不到针对你的问题补充所做的回答
更多追问追答
追问
如何用sizeof来计算p指针指向的字符串的长度?
这条语句该怎么写?
追答
sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。
指针这个类型的长度就是4
sizeof不能求字符串长度
lq8475960
2013-12-22
知道答主
回答量:4
采纳率:0%
帮助的人:5923
展开全部
strlen的结果是正确的,而sizeof是在编译的时候处理的,这个时候编译器还不知道你这个指针指向的内容呢,因为你这个指针指向中国,是在运行的时候才处理的,好好想想,就是sizeof是在编译的时候就已经算出结果了,不管你程序运行的时候指向哪里,它都是那个值。如果你写sizeof(”中国”)那结果就是5了
以上纯属手打,望采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
whfnumber1
2013-12-22 · TA获得超过129个赞
知道答主
回答量:89
采纳率:0%
帮助的人:66.1万
展开全部
strlen获取字符串的长度。
每个中文字符占用两个字节,所以中国是strlen是2+2=4;
英文字符保存一个字节,故ZG是1+1=2

sizeof用于求取占用的空间。
但是注意,你求取的对象不是字符串本身,而是变量本身。p和q两个变量均为指针,指针在计算机中占用4个字节,所以最后两个都是4.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式