如果你经常刷笔试题,那你一定会刷到这样的题目:
char str[] = “hello”; printf(“%d %d ”, sizeof(str), strlen(str)); const char *str = “hello”; printf(“%d %d ”, sizeof(str), strlen(str));
把 sizeof 和 strlen 放在一起考察,题目不难,只要你的C语言基本功扎实,做出来应该没问题。
第一个,str是个数组,数组里面的内容是字符串hello。但是需要注意的是,字符串都是以'�'结尾,所以数组实际占6个字节。
sizeof是关键字,用于求解类型的长度,sizeof加上数组名,表示数组所占的字节数,所以结果是6。
strlen是字符串处理函数,求解字符串的长度,长度不包含'�',所以结果是5。
第二个,str是指针,指向字符串常量。
sizeof加上指针,表示指针变量占的字节数,32位系统是4字节,64位系统是8字节。至于说字符串长度,跟上面一样,是5个字节。
这些都算是常见的,我们再来看下不常见的,指针都当作8字节来处理。
int a[] = {1, 2, 3}; printf("%ld ",sizeof(&a)); printf("%ld ",sizeof(*a)); intb[2][3]={0}; printf("%ld ",sizeof(b[0])); printf("%ld ",sizeof(b[0]+1)); printf("%ld ",sizeof(&b[0]));
一个一维数组,&a表示数组的地址,sizeof(&a)是8字节。
*a表示数组第一个元素,sizeof(*a)是4个字节。
对于二维数组,b[0]表示首行首元素地址,类似于一维数组的数组名,sizeof(b[0])就是第一行的长度12字节。
b[0]+1表示首行第二个元素的地址,编译器当作指针来处理,sizeof(b[0] + 1)是8个字节。
&b[0]表示数组首行地址,编译器同样把它当作指针来处理,sizeof(&b[0])也是8字节。
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
C语言
+关注
关注
180文章
7534浏览量
129097 -
字符串
+关注
关注
1文章
552浏览量
20155 -
函数
+关注
关注
3文章
3911浏览量
61358 -
指针
+关注
关注
1文章
473浏览量
70364 -
数组
+关注
关注
1文章
409浏览量
25597
原文标题:strlen和sizeof
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
C语言sizeof和strlen的区别
大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是C语言sizeof和strlen的区别,希望能对你有所帮助
发表于 07-11 11:51
•354次阅读
Labview和C语言中Whlile循环的区别。
本帖最后由 高顺周 于 2012-6-2 16:23 编辑
在C语言中先是执行判断 然后运行在Labview似乎是先运行最后判断比如while(i
发表于 06-02 14:18
strlen与sizeof区别
1.strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。char aa[10];cout
发表于 02-10 10:44
几个c语言中的问题(持续更新中)
sizeof 和strlen:sizeof 是运算符,strlen是函数。strlen的结果是在运行的时候才计算出,用来计算字符串的长度,而
发表于 05-08 11:13
【求助】C语言中sizeof使用错误
();printf("output\n");printf("%d",sizeof('c'));printf("%d",sizeof(string1
发表于 11-08 11:26
c语言中double与float的区别 相关资料分享
c语言中double与float的区别C语言中小数的数据类型为 float 或 double:float 称为单精度浮点数,double 称
发表于 07-01 09:10
sizeof与strlen到底有什么区别经典C语言面试题讲解
基本定义1、sizeof是C/C++中的一个运算符,其作用是返回一个对象或者类型在内存中所占用的字节数。
注意:sizeof后面如果是类型则必须加括号,如 sizeof(char);而如果是变量名
strlen和sizeof的异同
1,strlen函数作用:用于计算以空字符'\0'结尾的字符串的长度,即字符串中的字符个数,不包括空字符本身。返回值:strlen返回一个size_t类型的值,表示字符串中字符
评论