c++ sizeof详解
c语言详解sizeof
原文地址:http://blog.sina.com.cn/s/blog_5da08c340100bmwu.html
sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。
二、sizeof的使用方法
1、用于数据类型
sizeof使用形式: sizeof(type)
数据类型必须用括号括住: sizeof(int)
2、用于变量
sizeof使用形式: sizeof(var_name) 或 sizeof var_name
变量名可以不用括号括住.如sizeof (var_name),sizeof var_name等都是正确形式
注意:sizeof操作符不能用于函数类型,不完全类型或位字段。
例如: sizeof(max) --若此时变量max定义为int max();
三、sizeof的结果(以下结果都是在Linux v2.6 gcc v4获取)
sizeof操作符的结果类型是size_t
1、ANSI C正式规定字符类型为1字节。
sizeof(char) = 1;
2、其他类型在ANSI C中没有具体规定,大小依赖于实现。
sizeof(int) = 4;
3、当操作数是指针时,sizeof依赖于编译器。
4、当操作数具有数组类型时,其结果是数组的总字节数。
6、当操作数是联合类型时,sizeof是其最大字节成员的字节数。
struct a{ //对struct来说
在Linux上: sizeof(a) = 12;
这是因为编译器在考虑对齐问题时,在结构中插入空位以控制各成员对象的地址对齐。
7、当操作数是函数中的数组形参或函数类型的形参:
四、sizeof与其他操作符的关系
sizeof的优先级为2级,比/、%等3级运算符优先级高。
五、sizeof的主要用途
1、主要用途是与存储分配和I/O系统那样的例程进行通信。
size_t fread(void *ptr, size_t size, size_t nmemb, FILE * stream);
2、另一个的主要用途是计算数组中元素的个数。
c++ sizeof详解的更多相关文章
- c strlen和sizeof详解
用双引号定义并且声明的时候明确指定数组大小的话,sizeof就会返回指定的大小,不会自动加1: char str2[10] = "hello c"; printf("st ...
- (转载) Linux IO模式及 select、poll、epoll详解
注:本文是对众多博客的学习和总结,可能存在理解错误.请带着怀疑的眼光,同时如果有错误希望能指出. 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案 ...
- malloc 与 free函数详解<转载>
malloc和free函数详解 本文介绍malloc和free函数的内容. 在C中,对内存的管理是相当重要.下面开始介绍这两个函数: 一.malloc()和free()的基本概念以及基本用法: 1 ...
- sk_buff封装和解封装网络数据包的过程详解
转自:http://www.2cto.com/os/201502/376226.html 可以说sk_buff结构体是Linux网络协议栈的核心中的核心,几乎所有的操作都是围绕sk_buff这个结构体 ...
- iOS开发——高级特性&Runtime运行时特性详解
Runtime运行时特性详解 本文详细整理了 Cocoa 的 Runtime 系统的知识,它使得 Objective-C 如虎添翼,具备了灵活的动态特性,使这门古老的语言焕发生机.主要内容如下: 引言 ...
- Linux C 字符串输入函数 gets()、fgets()、scanf() 详解
一.gets() 函数详解 gets()函数用来从 标准输入设备(键盘)读取字符串直到 回车结束,但回车符('\n')不属于这个字符串. 调用格式为: gets(str); 其中str为字符串变量(字 ...
- Linux C 字符串函数 sprintf()、snprintf() 详解
一.sprintf() 函数详解 在将各种类 型的数据构造成字符串时,sprintf 的强大功能很少会让你失望. 由于 sprintf 跟 printf 在用法上几乎一样,只是打印的目的地不同而已,前 ...
- Linux C popen()函数详解
表头文件 #include<stdio.h> 定义函数 FILE * popen( const char * command,const char * type); 函数说明 popen( ...
- trie字典树详解及应用
原文链接 http://www.cnblogs.com/freewater/archive/2012/09/11/2680480.html Trie树详解及其应用 一.知识简介 ...
- memset函数详解
语言中memset函数详解(2011-11-16 21:11:02)转载▼标签: 杂谈 分类: 工具相关 功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大 ...
随机推荐
- Vue 快速入门(一)
1.介绍 Vue(读音/vju/,类似view),是中国的大神尤雨溪开发的,为数不多的国人开发的世界顶级开源软件.是一套用于构建用户界面的渐进式框架,Vue 被设计为可以自底向上逐层应用.MVVM响应 ...
- 双目测距+点云——使用MiddleBurry数据集的图片
效果 输入: 左图 右图 输出: 视差图 深度图 实现了鼠标点击图片中的位置,显示其深度. 点云 其他例子点云: bicycle motorcycle 使用自己的双目摄像头拍摄的图片: bottle ...
- 脱坑记录--- removeEventListener 移除事件监听失败的经历--vue--keep-alive-----完美实现echarts自适应屏幕~~~~
下面开始讲述事情经过~~~~ 页面代码是这样的 <template> <page-view :title="title"> <div id=" ...
- 《《关于我把好好的c++小游戏改的很ex》》
#undef UNICODE#undef _UNICODE#include <iostream>#include <iomanip>#include <string> ...
- (原创)【B4A】一步一步入门01:简介、开发环境搭建、HelloWorld
一.前言 作者注:絮絮叨叨,可跳过不看. 一直有开发跨平台软件的需求.因为我的主力是C# ,所以当MAUI出现后,我欣喜若狂的开始学习研究.但是经历了两个月左右的时间,我弃坑了,我发现MAUI不是我能 ...
- 模拟BS服务器分析-模拟BS服务器代码实现
模拟BS服务器分析 模拟网站服务器,使用浏览器访问自己编写的服务端程序,查看网页效果. 服务器要给客户端回写一个信息,回写一个html页面(文件)我们需要读取index.html文件,就必须的知道这个 ...
- spring-in-action-day04-配置属性 @ConfigurationProperties
1.Spring环境抽象的概念 2.怎么配置属性.在application.yml举例一些常用的配置 3.自定义配置属性@ConfigurationProperties(prefix = " ...
- Dapr Workflow构建块的.NET Demo
Dapr 1.10版本中带来了最有亮点的特性就是工作流构建块的的发布,虽然是Alpha 阶段,可以让我们尽早在应用系统中规划工作流, 在使用Dapr的系统中更好的编写负责的分布式应用系统.Dapr 工 ...
- 栈——stack的用法
介绍 栈(stack)又名堆栈,它是一种运算受限的线性表.限定仅在表尾进行插入和删除操作的线性表.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新元素放到 ...
- 与 Flutter 共创未来 | Flutter Forward 活动精彩回顾
作者 / Google 开发者框架和语言 (含 Flutter.Dart 和 Go) 产品经理 & 用户体验总监 Tim Sneath 我们很高兴可以在 Flutter Forward 活动 ...