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 
  • 相关阅读:
    logging——日志——转载02
    logging——日志——转载03
    c# 整型数据与字符串 的之间互换(原创)
    收到邮件且自动发送到对方提供的邮箱
    学习了1!+...10!
    Outlook 2003 Add in 部署笔记
    学会了调用方法
    c# 属性的作用
    (转)软件的围城,谈高级语言的学习(一位架构师的忠告!)
    常用命令控制行
  • 原文地址:https://www.cnblogs.com/zoneofmine/p/8270580.html
Copyright © 2011-2022 走看看