1.sizeof的使用:sizeof操作符以字节形式给出了其操作数的存储大小.

  sizeof操作符不能用于函数类型,不全然类型或位字段。不全然类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等。

  2.sizeof的结果:sizeof操作符的结果类型是size_t,它在头文件里typedef为unsigned int类型。

该类型保证能容纳实现所建立的最大对象的字节大小。

  int、unsigned int 、short int、unsigned short 、long int 、unsigned long 、float、double、long double类型的sizeof 在ANSI C中没有详细规定,大小依赖于实现。一般可能分别为2、2、2、2、4、4、4、8、10。

  当操作数是指针时,sizeof依赖于编译器。near类指针字节数为2,far、huge类指针字节数为4。一般Unix的指针字节数为4。

  当操作数具有数组类型时。其结果是数组的总字节数,联合类型操作数的sizeof是其最大字节成员的字节数。

  结构类型操作数的sizeof是这样的类型对象的总字节数,包含不论什么垫补在内.

  假设操作数是函数中的数组形參或函数类型的形參,sizeof给出其指针的大小。

  struct MyStruct

  {

  char dda;//偏移量为0,满足对齐方式,dda占用1个字节;

  double dda1;//下一个可用的地址的偏移量为1,不是sizeof(double)=8

  //的倍数,须要补足7个字节才干使偏移量变为8(满足对齐

  //方式),因此VC自己主动填充7个字节。dda1存放在偏移量为8

  //的地址上。它占用8个字节。

  int type;//下一个可用的地址的偏移量为16,是sizeof(int)=4的倍

  //数,满足int的对齐方式,所以不须要VC自己主动填充,type存

  //放在偏移量为16的地址上,它占用4个字节。

  };//全部成员变量都分配了空间空间总的大小为1+7+8+4=20。不是结构

  //的节边界数(即结构中占用最大空间的类型所占用的字节数sizeof

  //(double)=8)的倍数。所以须要填充4个字节。以满足结构的大小为

  //sizeof(double)=8的倍数

  所以该结构总的大小为:sizeof(MyStruc)为1+7+8+4+4=24。当中总的有7+4=11个字节是VC自己主动填充的,没有放不论什么有意义的东西.

sizeof()函数的使用——————【Badboy】的更多相关文章

  1. C语言中的sizeof函数总结

    sizeof函数的结果: 变量:变量所占的字节数. ; printf( 数组:数组所占的字节数. ,,,,}; ] = {,,,,}; printf("size_arr1=%d\n" ...

  2. 数据类型、位运算、sizeof()函数

    数据精度,依次升高.(负数必须使用有符号类型) 不同精度的数据间运算,所得结果为高精度类型. 数据类型详细信息如下图: 整型数据的数制:十进制(32).八进制(032,以0开头).十六进制(0x32, ...

  3. C sizeof函数

    #include<stdio.h> int main() { struct stu { union { ]; ]; } cls; ]; float cj; } xc; printf(&qu ...

  4. PHP sizeof() 函数

    实例 返回数组中元素的数目: <?php$cars=array("Volvo","BMW","Toyota");echo sizeof ...

  5. sizeof()函数求各类型变量所占空间的方法

    #include "stdafx.h" #include <iostream> using namespace std; ]) { cout<<sizeof ...

  6. CC++中sizeof函数的用法

    C/C++中sizeof()函数的用法 学习C/C++有时会遇到下面的情况: 已知 char *str1="absde"; char str2[]="absde" ...

  7. C语言内存分配函数malloc——————【Badboy】

    C语言中经常使用的内存分配函数有malloc.calloc和realloc等三个,当中.最经常使用的肯定是malloc,这里简单说一下这三者的差别和联系. 1.声明 这三个函数都在stdlib.h库文 ...

  8. C/C++ sizeof函数解析——解决sizeof求结构体大小的问题

    C/C++中不同数据类型所占用的内存大小 32位                 64位 char               1                    1 int           ...

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

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

随机推荐

  1. 【C/C++多线程编程之十】pthread线程私有数据

    多线程编程之线程私有数据      Pthread是 POSIX threads 的简称.是POSIX的线程标准.         线程同步从相互排斥量[C/C++多线程编程之六]pthread相互排 ...

  2. Spark Streaming概念学习系列之SparkStreaming的高层抽象DStream

    不多说,直接上干货! SparkStreaming的高层抽象DStream 为了便于理解,Spark Streaming提出了DStream抽象,代表连续不断的数据流. DStream 是一个持续的R ...

  3. input上传文件检测文件大小

    前几天在做 input[type='file'] 上传图片时,需要检测上传文件的内存大小,写了一个小demo,在此做一总结: <!DOCTYPE html> <html lang=& ...

  4. 读书笔记之《HTML5 与 CSS3 基础教程》

    1· 读前预期 考虑到对于 Web 开发零基础,凡涉足一件未知的任务,最好先理清任务的逻辑结构,然后有目的地逐步学习.为实现我们的需求和设计,必须要学习前端.后端.服务器等一系列暂时陌生的知识,在此, ...

  5. JavaScript 获取某个字符的 Unicode 码

    function getUnicode (charCode) { return charCode.charCodeAt(0).toString(16); } 获取的是 UTF-16 编码的值,不足4位 ...

  6. Projective Texture Mapping - 投影纹理

    昨天导师让写一个投影纹理,将一个相机渲染的图片的一部分投影到另外一个相机里面,目的是无缝的拼接. 投影纹理就和shadow map一样,都是将片元转换到另外一个相机/光源坐标系下,投影后找到对应的纹素 ...

  7. 路飞学城Python-Day23(practise)

    本章总结 练习题 什么是C/S架构? 互联网协议是什么?分别介绍五层协议中每一层的功能? 基于tcp协议通信,为何建立链接需要三次握手,而断开链接却需要四次挥手 为何基于tcp协议的通信比基于udp协 ...

  8. C# 基础复习 四 ADO

    调用存储过程,并接收多个表的查询结果 一个表用一个DataTable,DataSet可以存储多个DataTable DataSet需要SqlDataAdapter来填充数据 SqlConnection ...

  9. vue封装http请求

    import axios from 'axios' import isObject from 'lodash/isObject' const http = function (api, data = ...

  10. Laravel 5.5 项目安装报错

    错误一. [Composer\Exception\NoSslException] The openssl extension is required for SSL/TLS protection bu ...