博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ sizeof操作符的用法和strlen函数的区别
阅读量:6954 次
发布时间:2019-06-27

本文共 1059 字,大约阅读时间需要 3 分钟。

摘要:本人首先介绍了C++中sizeof操作符的用法和注意事项,其次对比了和strlen的区别和使用,方便大家在写代码的时候查阅,和面试、笔试的时候复习。

目录:

sizeof的用法:

sizeof 是一种单目操作符,而不是函数。sizeof以字节形式给出操作数的存储空间

操作数可以是一个表达式或在括号内的类型名。操作数的存储空间由操作数的类型决定。

char str[]="hello";char str1[100];char *p;int n=10;sizeof(str1)=100;sizeof(str)=5+1;sizeof(p)=4;sizeof(n)=4;void Func(char str[100]){    sizeof(str)=4;//str退化成指针了}void *p=malloc(100);sizeof(p)=4;

当数组变量被传入函数中做sizeof 运算,则和指针的运算没有区别。

sizeof和strlen的区别:

  • sizeof是运算符;strlen 是函数;

  • sizeof操作符的结果类型是size_t,它在头文件typedef为unsigned int 类型,该类型保证能容纳实现所建立的最大对象的字节大小。

  • sizeof可以用类型做参数,strlen只能用char * 做参数,且必须是以'\0'结尾。

  • 数组做sizeof的参数不退化,但作为strlen函数的参数,就会退化为指针了。

  • 大部分编译器在编译程序的时候,就计算出来sizeof了,这也是sizeof()可以作为数组定义的维数的原因,strlen函数的结果要等运行的时候才能计算出来,它用来计算字符串的长度,不是类型占内存的大小。

  • sizeof后如果是类型必须加括号,如果是变量名可以不加括号。这是因为sizeof是操作符不是函数的原因。

  • 在计算字符串数组的长度上有区别。 例如:

char str[10];         int a=strlen(str);         int b=sizeof(str);         //a 为0  b为10;
  • 如果要计算指针指向的字符串的长度,则一定要使用strlen例如:

char *str="hello";         int a=sizeof(str);          int b=strlen(str);         //a=4  b= 5

转载于:https://www.cnblogs.com/googny/p/3695319.html

你可能感兴趣的文章
让ssh客户端直接上传和下载文件
查看>>
Linux 防火墙
查看>>
简练软考知识点整理-外指赶快先提投降
查看>>
32 MySQL主从
查看>>
HanLP-分类模块的分词器介绍
查看>>
Raid5磁盘阵列修复方法介绍
查看>>
技术解析系列 | PouchContainer 支持 LXCFS 实现高可靠容器隔离
查看>>
linux中web服务器的基本配置
查看>>
linux服务器之间设置ssh免密登录
查看>>
如何将M4A格式的音频转换为MP3格式?只需一步搞定
查看>>
APP项目资源对接平台有那几家
查看>>
微信自定义网页分享链接(可自定义链接 图片 内容介绍)
查看>>
Oracle管理表空间(三)--Oracle UNDO表空间
查看>>
Oracle使用rman进行表空间基于时间点的恢复
查看>>
DNS 多网段的反向记录
查看>>
mac效率工具
查看>>
Oracle imp和exp的使用
查看>>
软件工程---典型用户
查看>>
Acunetix Web Vulnerability Scanner 8.x.x 逆向
查看>>
判断是否是IP地址格式
查看>>