sizeof详解-它到底是什么

sizeof详解-它到底是什么

sizeof是一个操作符,它不是函数,他既是关键字,也是运算符。

  int a;
  sizeof(int);
  sizeof(a);
  sizeof a;

上述3个sizeof的输出结果相同。首先它不是函数,函数没有第三种写法。

  1. 在c99标准中明确提到保留下来的关键有32个:
    (6.4.1) keyword: one of
    auto break case char const continue default do
    double else enum extern float for goto if
    int long register return short signed sizeof static
    struct switch typedef union unsigned void volatile while

  2. 它也同加减乘除一样是运算符
    sizeof 操作符的作用是返回一个对象或类型名所占的内存字节数,返回值的类型为size_t,长度的单位是字节,在编译而不是运行时确定。
    • 对引用类型做sizeof操作将返回存放此引用类型对象所需的内在空间大小。
    • 对指针做sizeof操作将返回存放指针所需的内在大小;注意,如果要获取该指针所指向对象的大小,则必须对指针进行引用。
    因为 sizeof返回整个数组在内存中的存储长度,所以用 sizeof 数组的结果除以sizeof 其元素类型的结果,即可求出数组元素的个数。

     int a;
     char b[10];
     char *p;
     printf("%d\n", sizeof(int));
     printf("%d\n", sizeof(a));
     printf("%d\n", sizeof a );
     printf("%d\n", sizeof b);
     printf("%d\n", sizeof p);
     p = b;
     printf("%d\n", sizeof(p));
     printf("%d\n", sizeof(*p));
     printf("%d\n", sizeof(*b));
     system("pause");
    

    结果:

     4
     4
     4
     10
     4
     4
     1
     1
    

你可能感兴趣的:(sizeof详解-它到底是什么)