更多课程 选择中心

C/C++培训
达内IT学院

400-996-5531

C/C++基础sizeof与strlen 区别

  • 发布:C++培训
  • 来源:C++资讯
  • 时间:2020-08-27 17:10

在 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 不是一个函数,因为函数调用必须有一对括号。

#include <stdio.h>

int main(void)

{

int num = 97;

printf("sizeof(num = 0)的值:%d\n",sizeof(num = 0));

printf("num 的值:%d\n",num);

return 0;

}

运行结果为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语言屹立不倒,原因有这些

C语言宏定义的几种使用方法

C与C++内存管理避坑指南

C/C++代码规范注释有哪些讲究?

C语言中,全局变量滥用的后果竟如此严重?

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省