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

2024-12-03 03:02:46
推荐回答(3个)
回答1:

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

注意:回答内容已修改,你自己看回答内容的改变,好好找一下,回答中就有
提示:请使用追问功能,否则你补充提问后我再补充回答,你可能找不到针对你的问题补充所做的回答

回答2:

strlen的结果是正确的,而sizeof是在编译的时候处理的,这个时候编译器还不知道你这个指针指向的内容呢,因为你这个指针指向中国,是在运行的时候才处理的,好好想想,就是sizeof是在编译的时候就已经算出结果了,不管你程序运行的时候指向哪里,它都是那个值。如果你写sizeof(”中国”)那结果就是5了
以上纯属手打,望采纳

回答3:

strlen获取字符串的长度。
每个中文字符占用两个字节,所以中国是strlen是2+2=4;
英文字符保存一个字节,故ZG是1+1=2

sizeof用于求取占用的空间。
但是注意,你求取的对象不是字符串本身,而是变量本身。p和q两个变量均为指针,指针在计算机中占用4个字节,所以最后两个都是4.