zoukankan      html  css  js  c++  java
  • sizeof 和 strlen

    sizeof

    1.sizeof 是运算符,返回一个对象或者类型所占的内存字节数,其值在编译时即计算好了。

    2.sizeof 有三种语法形式,如下:

    • •sizeof( object );       // sizeof( 对象 )
    • • sizeof( type_name );     // sizeof( 类型 );
    • •sizeof object;       // sizeof 对象;

    3.sizeof 不能用来运算函数类型,不完整类型,位域类型。

    4.如果运算对象是引用类型,那么实际运算的是所引用的类型。

    5.用sizeof对类名操作,得到的结果是该类的对象在存储器中所占据的字节大小,由于静态成员变量不在对象中存储,因此这个结果等于各非静态数据成员(不包括成员函数)的总和加上编译器额外增加的字节。后者依赖于不同的编译器实现,C++标准对此不做任何保证。

    6.C++标准规定类的大小不为0,sizeof 空类的大小为1,当类不包含虚函数和非静态数据成员时,其对象大小也为1。 如果在类中声明了虚函数(不管是1个还是多个),那么在实例化对象时,编译器会自动在对象里安插一个指针指向虚函数表VTable,在32位机器上,一个对象会增加4个字节来存储此指针,它是实现面向对象中多态的关键。而虚函数本身和其他成员函数一样,是不占用对象的空间的。

    7.如果运算对象是一个表达式,sizeof不会去求表达式的值,而是计算所返回的静态类型的大小。另外左右值转换,数组名指针转换,函数名指针转换都不会发生。

    strlen

     1.strlen() 是函数,返回以 ‘’结尾的 C String的长度(不包含 ‘’ ,注意 sizeof 是包括的),必须在运行时才能计算。

    char str[10] = "123";
    int i = sizeof(str);       // i = 10;
    i = strlen(str);           // i = 3 
  • 相关阅读:
    Android 聊天表情输入、表情翻页带效果、下拉刷新聊天记录
    android启动界面
    ubuntu 关于sublime text3的一些应用
    [LeetCode]Valid Sudoku解题记录
    在 Mac OS X 10.10 安装 pyenv 的一个小坑
    java调用百度地图API依据地理位置中文获取经纬度
    debug openStack
    error recoder,error debug for openStack kilo
    SDN,NFV
    openStack kilo 手动Manual部署随笔记录
  • 原文地址:https://www.cnblogs.com/zoneofmine/p/8270580.html
Copyright © 2011-2022 走看看