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

目录:

sizeof的用法:

sizeof和strlen的区别:

sizeof的用法:

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

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

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

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

sizeof和strlen的区别:

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

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

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

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

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

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

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

         char str[];
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

C++ sizeof操作符的用法和strlen函数的区别的更多相关文章

  1. sizeof运算符和strlen函数的区别

    1.sizeof是运算符,而strlen是函数. 2.sizeof操作符的运算结果为size_t,他在头文件中的typedef为unsigned int.该类型保证能容纳所操作对象的最大字节大小. 3 ...

  2. sort方法和sorted()函数

    sort方法和sorted()函数的区别: 相同点:都能完成排序操作. 不同点: (1)使用sort()方法对list排序会修改list本身,不会返回新list,sort()不能对dict字典进行排序 ...

  3. C语言strlen函数和sizeof操作符

    字符'x'于字符串"x"的区别 'x' 属于基本类型(char)字符类型-----------------由1个字符组成('x') "x"属于派生类型(char ...

  4. C++中sizeof操作符与strlen函数

    sizeof操作符: sizeof是一个操作符,返回一条表达式或一个类型名字所占的字节数.返回值一个常量表达式,类型为size_t. size_t sizeof(type) size_t sizeof ...

  5. 字符串 前篇 ---- sizeof()操作符和strlen()库函数

    本文不是研究sizeof(), strlen() 的深奥定义和原理,我们不会在理论上太过钻牛角尖.希望读这篇文章的你,也不要太过抠概念(不要拘泥于语法).我们只做 实用意义 的介绍和讨论. 在介绍字符 ...

  6. strcpy,strlen, strcat, strcmp函数,strlen函数和sizeof的区别

    //计算字符串实际长度        //strlen()函数:当遇到'\0'时,计算结束,'\0'不计入长度之内,如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到'\0 ...

  7. sizeof和strlen函数区别

    一.sizeof    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等.    它的功能是:获得保 ...

  8. c语言之sizeof总结+strlen函数

    一.sizeof的概念 Sizeof是C语言的一种单目操作符,如C语言的其他操作符++.–等.它并不是函数.Sizeof操作符以字节形式给出了其操作数的存储大小.操作数可以是一个表达式或括在括号内的类 ...

  9. C语言中sizeof、strlen函数的部分理解

    一.测试环境 Win10 + Visual Studio 2017 二.测试代码 #include "pch.h" #include <iostream> #inclu ...

随机推荐

  1. 第一周:读取XML深度数据并将其重建为三维点云

    本周主要任务:学习PCL点云库,掌握利用PCL对点云处理的方法 任务时间:2014年9月1日-2014年9月7日 任务完成情况:完成了读取单幅xml深度数据,并重建三维点云并显示 任务涉及基本方法: ...

  2. 教你使用Android SDK布局优化工具layoutopt

    创建好看的Android布局是个不小的挑战,当你花了数小时调整好它们适应多种设备后,你通常不想再重新调整,但笨重的嵌套布局效率往往非常低下,幸运的是,在Android SDK中有一个工具可以帮助你优化 ...

  3. 解决easyui-datagrid在ie中无法reload问题

    easyui在页面载入时,会自己主动填充datagrid中的数据,当加入.改动.删除后,会触发reload事件,对datagrid进行又一次载入. 这个过程在FireFox中没有问题,用firebug ...

  4. LVS 之 DR 2

    http://www.cnblogs.com/kgdxpr/archive/2013/09/09/3309776.html http://lyp0909.blog.51cto.com/508999/5 ...

  5. 高级I/O之STREAMS

    http://en.wikipedia.org/wiki/STREAMS STREAMS(流)是系统V提供的构造内核设备驱动程序和网络协议包的一种通用方法,对STREAMS进行讨论的目的是为了理解系统 ...

  6. sqlserver 字符串相关函数

    http://www.cnblogs.com/jiajiayuan/archive/2011/06/16/2082488.html 以下所有例子均Studnet表为例:  计算字符串长度len()用来 ...

  7. cocos2dx 背景用小尺寸图片滚动填充的方法

    直接上代码 在初始化方法中添加图片: bool BackGroundLayer::init() { frameCache=CCSpriteFrameCache::sharedSpriteFrameCa ...

  8. python 学习笔记re

    在学习python的过程中很多时候都需要用到re(正则),因为我也不是开发所以呢只是简单说一下经常需要用到的东西. 在工作中经常用到的主要是三个函数:1.math   2.search   3.sub ...

  9. Android 高级UI设计笔记08:Android开发者常用的7款Android UI组件(转载)

    Android开发是目前最热门的移动开发技术之一,随着开发者的不断努力和Android社区的进步,Android开发技术已经日趋成熟,当然,在Android开源社区中也涌现了很多不错的开源UI项目,它 ...

  10. linux编辑器 vi的使用

    vi 编辑器的三个模式: 命令模式 开始就是命令模式 insert模式 i, I, a, A, o,O ,s, S 命令行模式 : i  在当前位置进入Insert模式 I  在行的头部进入Inser ...