在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来求得呢? 展开
strlen的ZG应该是2个字符,sizeof后的ZG应该是3个字符才是,应该还有一个\0
可是运行的结果与我想的有差异,请大家指点一下,谢谢
假如我想直接计算出来这两个字符串的长度与分配长度,应该怎么使用strlen和sizeof函数呢?这里我该如何输出字符指针所指向的字符串呢?为什么指针就求不了字符串?我知道用字符数组可以求,但是字符指针呢?该如何用sizeof来求得呢? 展开
3个回答
展开全部
sizeof(p)计算的是p变量的大小
由于p是指针,p的大小就是4字节,它不是求内容的长度,而是变量p本身的大小
同理q指针也一样
你可以试一下将指针指向的内容长度再增长,sizeof(p)仍然是4
字符指针:分配长度用strlen计算后+1
如果算数组分配长度(数组声明时的空间大小,不管字符数组是否填满)用sizeof
注意:回答内容已修改,你自己看回答内容的改变,好好找一下,回答中就有
提示:请使用追问功能,否则你补充提问后我再补充回答,你可能找不到针对你的问题补充所做的回答
由于p是指针,p的大小就是4字节,它不是求内容的长度,而是变量p本身的大小
同理q指针也一样
你可以试一下将指针指向的内容长度再增长,sizeof(p)仍然是4
字符指针:分配长度用strlen计算后+1
如果算数组分配长度(数组声明时的空间大小,不管字符数组是否填满)用sizeof
注意:回答内容已修改,你自己看回答内容的改变,好好找一下,回答中就有
提示:请使用追问功能,否则你补充提问后我再补充回答,你可能找不到针对你的问题补充所做的回答
更多追问追答
追问
如何用sizeof来计算p指针指向的字符串的长度?
这条语句该怎么写?
追答
sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。
指针这个类型的长度就是4
sizeof不能求字符串长度
展开全部
strlen的结果是正确的,而sizeof是在编译的时候处理的,这个时候编译器还不知道你这个指针指向的内容呢,因为你这个指针指向中国,是在运行的时候才处理的,好好想想,就是sizeof是在编译的时候就已经算出结果了,不管你程序运行的时候指向哪里,它都是那个值。如果你写sizeof(”中国”)那结果就是5了
以上纯属手打,望采纳
以上纯属手打,望采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
strlen获取字符串的长度。
每个中文字符占用两个字节,所以中国是strlen是2+2=4;
英文字符保存一个字节,故ZG是1+1=2
sizeof用于求取占用的空间。
但是注意,你求取的对象不是字符串本身,而是变量本身。p和q两个变量均为指针,指针在计算机中占用4个字节,所以最后两个都是4.
每个中文字符占用两个字节,所以中国是strlen是2+2=4;
英文字符保存一个字节,故ZG是1+1=2
sizeof用于求取占用的空间。
但是注意,你求取的对象不是字符串本身,而是变量本身。p和q两个变量均为指针,指针在计算机中占用4个字节,所以最后两个都是4.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询