zoukankan      html  css  js  c++  java
  • sizeof操作符的使用详解

    一直把sizeof当做函数来用,今天才发现它仅仅是个操作符而已。(严格来说,操作符也是函数,但是把它当做操作符来看更合适)

    用法:

    sizeof操作符的作用是返回一个对象或类型名的长度,返回值的类型为size_t(unsigned),长度的单位是字节(byte)。sizeof表达式的结果是编译时常量。有以下三种语法形式:

     sizeof(type name);
      sizeof(expr); // 获得该表达式的结果的类型长度
      sizeof expr; // 不计算表达式expr的值

    举例说明:

    sizeof(int); // 表达式值为4
    sizeof int; // 语法错误
    sizeof(2+0.5); // 表达式值为8;
    sizeof 2+0.5; // 表达式值为4.5

    使用sizeof的结果部分地依赖于所涉及的类型:

    • 对char类型或值为char类型的表达式做sizeof操作保证得1
    • 对引用类型做sizeof操作将返回存放此引用类型对象所需的内存空间大小
    • 对指针做sizeof操作将返回存放指针所需的内存大小;如果要获取指针所指向对象的大小,则须对指针进行解引用
    • 对数组做sizeof操作等效于将对其元素类型做sizeof操作的结果乘上数组元素的个数。所以可以用sizeof数组的结果除以sizeof其元素类型的结果即可求出数组元素的个数

    通过一个小程序来测试你是否理解了sizeof的用法,看下列程序的输出结果:

    1 #include <iostream>
    2 using namespace std;
    3 size_t func(char a[])
    4 {
    5 return sizeof(a);
    6 }
    7 int main()
    8 {
    9 char a = 'a';
    10 char b[] = "hustor";
    11 char c[] = {'h','u','s','t','o','r'};
    12 char *d = "hustor";
    13 cout << sizeof a << endl;
    14 cout << sizeof b << endl;
    15 cout << sizeof c << endl;
    16 cout << sizeof d << endl;
    17 cout << func(b) << endl;
    18 cout << func(c) << endl;
    19 cout << func(d) << endl;
    20 return 0;
    21 }

    正确结果:

    1

    7

    6

    4

    4

    4

    4

    做对了吗,是不是很简单?如果还有什么问题,欢迎和我讨论

  • 相关阅读:
    在am中定义消息集束,并在CO中验证之后抛出异常。
    在EORow或者VORow中对数据进行重复性校验
    axis2 webservice jar包使用情况(转)
    std::function以及std::bind
    Qt学习过程
    NULL和nullptr
    清空表且id为0
    C++线程互斥、同步
    warning: deleting 'void *' is undefined 错误
    Classification / Recognition
  • 原文地址:https://www.cnblogs.com/sunj/p/1996516.html
Copyright © 2011-2022 走看看