欢迎来到培训无忧网!

全国切换

咨询热线 400-001-5729

位置:培训无忧网 > 新闻资讯 > 电脑/IT > c语言 >  C语言基础学习之sizeof与strlen区别有哪些

C语言基础学习之sizeof与strlen区别有哪些

来源:达内教育 发布人:星星

2022-01-08 14:56:07|已浏览:5149次

strlen和sizeof的区别是什么

       在 C/C++ 中,sizeof() 是一个判断数据类型或者表达式长度的运算符。今天我们主要来讲一讲C/C++基础sizeof与strlen 区别,下面先看看sizeof的定义:

1、sizeof 定义
       sizeof 是 C/C++ 中的一个操作符(operator),返回一个对象或者类型所占的内存字节数。
       The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type(including aggregate types). This keyword returns a value of type size_t. ——来自MSDN

       其返回值类型为 size_t ,在头文件 stddef.h 中定义为: typedef unsigned int size_t;从sizeof 的定义可以看出:sizeof 不是一个函数,因为函数调用必须有一对括号。

int num = 97;

printf("sizeof(num = 0)的值:%d\n",sizeof(num = 0));
printf("num 的值:%d\n",num);
      运行结果为4,97;并不是4,0
      说明:sizeof 不是标准意义上的一元操作符,不支持链式表达式,sizeof 作用域范围内的语句不会编译成机器码,如 sizeof(num++) 中的 ++ 不执行。sizeof 也不是函数, sizeof 更像一个特殊的宏,在编译阶段求值。
      下面说一说sizeof与strlen 区别:
      sizeof 是一个操作符,strlen 是库函数。sizeof 的参数可以是数据的类型,也可以是变量,而 strlen 只能以结尾。
编译器在编译时就计算出了 sizeof 的结果,而 strlen 函数必须在运行时才能计算出来。并且 sizeof 计算的是数据类型占内存的大小,而 strlen 计算的是字符串实际的长度。数组做 sizeof 的参数不退化,传递给 strlen 就退化为指针了。如:
      int ss[20]="0123456789";sizeof(ss)=80, //ss表示在内存中的大小,20*4。strlen(ss) //错误,strlen的参数只能是char*,且必须是以“\0”结尾的。

      char *ss="0123456789";sizeof(ss)=4, //ss是指向字符串常量的字符指针。sizeof(*ss)=1, // *ss是第一个字符。

      本文由培训无忧网达内教育专属课程顾问老师整理发布,更多C语言课程信息可关注培训无忧网C语言培训频道或添加老师微信:15033336050

      注:尊重原创文章,转载请注明出处和链接 https://www.pxwy.cn/news-id-13829.html 违者必究!部分文章来源于网络由培训无忧网编辑部人员整理发布,内容真实性请自行核实或联系我们,了解更多相关资讯请关注c语言频道查看更多,了解相关专业课程信息您可在线咨询也可免费申请试课。关注官方微信了解更多:150 3333 6050

留下你的信息,课程顾问老师会一对一帮助你规划更适合你的专业课程!
  • 姓名:

  • 手机:

  • 地区:

  • 想学什么:

  • 培训无忧网
免 费 申 请 试 听
提交申请,《培训无忧网》课程顾问老师会一对一帮助你规划更适合你的专业课程!