C++ 对象的sizeof问题】的更多相关文章

需要补充.. 1. 注意虚函数的指针占4个字节.(当然是32位机器) #include <cstdlib> #include <ctime> #include <iostream> #include <string.h> using namespace std; class A { public: const int a; }; class B { }; class C { public: ~C() {} }; class D : public C { pu…
sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着"辛苦我一个,幸福千万人"的伟大思想,我决定将其尽可能详细的总结一下. 但当我总结的时候才发现,这个问题既可以简单,又可以复杂,所以本文有的地方并不适合初学者,甚至都没有必要大作文章.但如果你想"知其然,更知其所以然"的话,那么这篇文章对你或许有所帮助. 菜鸟我对C++的掌握尚未深入,其中不乏错误,欢迎各位扔砖砸蛋. 1. 定义 sizeof是何方神圣?sizeof乃C/C++中的一个操…
以char类型为例: char a[100];     //a类型为char[100]    &a类型为 char (*)[100]    *a类型为char char *p = a;    //p类型为 char*, *p类型为char. 也可以写成char *p = &a; 类型char[100]和char (*)[100]可隐式到char*转化,指向第一个元素的地址.不包含隐式转换的写法应该:char *p  = &a[0];   而它们的区别: 再看 #include &l…
以下代码使用平台是Windows7 64bits+VS2012. sizeof是C/C++中的一个操作符(operator),其作用就是返回一个对象或者类型所占的内存字节数,使用频繁,有必须对齐有个全面的了解. 1.sizeof的基本语法 sizeof有三种语法形式,如下: (1)sizeof( object ); // sizeof( 对象 ); (2) sizeof( type_name ); // sizeof( 类型 ); (3)sizeof object; // sizeof 对象;…
一.前言 编译环境是vs2010(32位). <span style="font-size:18px;">#include<iostream> #include<stdio.h> #include<string.h> using namespace std; typedef struct { int a; char b; }A_t; typedef struct { int a; char b; char c; }B_t; typedef…
1.参数 sizeof是c/c++ 中的一个操作符,其作用是返回对象或数据类型所占的内存字节数. 用法:sizeof(对象).sizeof 对象.sizeof(类型) 如果类型做参数,返回的是该类型所占内存字节数, 对象做参数的几个常用的说明: sizeof(数组名)  返回的是数组所占空间字节数,  如:sizeof(数组名)/sizeof(数组元素类型)    计算数组大小. sizeof(指针) 返回指针类型大小(32位机为4字节) sizeof(*指针) 返回指针所指向数据类型的大小,如…
typedef struct{    int a;    char b;}A_t;typedef struct{    int a;    char b;    char c;}B_t;typedef struct{    char a;    int b;    char c;}C_t;void main(){    char*a=0;    cout<<sizeof(a)<<endl;//4    cout<<sizeof(*a)<<endl;//1--…
执行以下程序,查看输出: #include <stdio.h> #define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0])) int array[] = {23,34,12,17,204,99,16}; int main() {     int d;       for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)         printf("%d\n",array[d+1]);     …
sizeof运算符返回一条表达式或一个类型名字所占的字节数.sizeof运算符满足右结合律,其所得的值是一个size_t类型的常量表达式.运算符的运算对象有两种形式: sizeof(type) sizeof expr 在第二种形式中,sizeof返回的是表达式结果类型的大小.与众不同的一点是,sizeof并不实际计算其运算对象的值: Sales_data data,*p; siizeof(Sales_data);   //存储Sales_data类型的对象所占的空间大小 sizeof data;…
参考:sizeof_百度百科 sizeof()用法汇总(经典) 声明:本文是笔者抽出对自己有用的细节,对前两文的总结. 1.sizeof概念 sizeof是C语言中判断数据类型或者表达式长度符:不是一个函数,它的计算在程序编译时进行,而不是在程序执行的过程中才计算出来.所有sizeof()在编程过程中可以看做是一个常数来处理. 2.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素 sizeof计算数据(变量.类型.结构体等)…
sizeof运算符的结果部分地依赖于其作用的类型: 对char或者类型为char的表达式执行sizeof运算结果得1: 对引用类型执行sizeof运算得到被引用对象所占空间的大小: 对指针执行sizeof运算得到指针本身所占空间的大小: 对解引用指针执行sizeof运算得到指针指向的对象所占空间的大小,指针不需有效: 对数组执行sizeof运算得到整个数组所占空间的大小,等价于数组中所有的元素各执行一次sizeof运算并将所得结果求和: 对string对象或vector对象执行sizeof运算只…
sizeof sizeof操作符的作用是返回一个对象或类型名的长度,长度的单位是字节. 返回值的类型是标准库命名为size_t的类型,size_t类型定义在cstddef头文件中,该头文件是C标准库的头文件stddef.h的C++版本.他是一个和机器相关的unsigned类型,其大小足以保证内存中对象的大小. 1.什么是sizeof 首先看一下sizeof在msdn上的定义: The sizeof keyword gives the amount of storage, in bytes, as…
0. 前向声明 sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能具体的总结一下. 但当我总结的时候才发现,这个问题既能够简单,又能够复杂,所以本文有的地方并不适合刚開始学习的人,甚至都没有必要大作文章.但假设你想“知其然,更知其所以然”的话,那么这篇文章对你也许有所帮助. 菜鸟我对C++的掌握尚未深入,当中不乏错误,欢迎各位扔砖砸蛋. 1. 定义 sizeof是何方神圣?sizeof乃C/C++中的一个操作符(…
sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下.但当我总结的时候才发现,这个问题既可以简单,又可以复杂,所以本文有的地方并不适合初学者,甚至都没有必要大作文章.但如果你想“知其然,更知其所以然”的话,那么这篇文章对你或许有所帮助.菜鸟我对C++的掌握尚未深入,其中不乏错误,欢迎各位指正啊 1. 定义:sizeof是何方神圣sizeof乃C/C++中的一个操作符(operator)是也,简单的说其…
.NET对象占内存多少 一直有一个小小的疑惑——.NET一个对象或者一个集合占多少内存?有没有很快速的方法获取,而不是简单的估计分析对象大小? 查了MSDN,和一些其他人的分析,得到解决是托管代码对象的大小无法真实的得到,因为存在托管对象转化成非托管的CRL优化.但我仍然不死心,非要弄个究竟!好吧,最终得到一些结果了. sizeof关键字,用于获取值类型的大小,如int(占4个字节),char(2个字节):并且sizeof 运算符仅适用于值类型,而不适用于引用类型.所以针对对象改关键字无法使用.…
[C++专题]C++ sizeof 使用规则及陷阱分析   摘要:鉴于sizeof为各大软件公司笔试.面试必考题,现收集sizeof的各种用法,尽量做到全面理解,其中例子希望能举一反三.提示:下文例子都经过Visual C++ 6.0验证,平台为win32 Windows. 如在其他平台或编译器上运行有不同结果,请自行查看原因.欢迎转载,转载请注明出处,谢谢. 目录一.什么是sizeof二.sizeof用法三.基本数据类型的sizeof四.复杂数据类型的sizeof及其数据对齐问题五.class…
数据类型的大小(即所占字节数)以及能够表示的数据范围是与编译器和硬件平台有关的."float.h"头文件(如vc6.0,在include目录下)通常定义了基本数据类型能够表示的数据的最大值和最小值.你也可以使用 sizeof 来获得类型的大小(即所占字节数) .主流平台如Windows,在vc编译器下,char(1字节),short(2字节),int(4字节),float(4字节),long(4字节),double(8字节). (此处int float,long都是随着系统而变化)ch…
C/C++ 知识点---sizeof使用规则及陷阱分析 原文出处:[胖奇的专栏] 1.什么是sizeof 首先看一下sizeof在msdn上的定义:     The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t.  看…
关于指针和加减法: 指针的加减法:指针的加减法,加多少或者减多少,主要是看所指对象的sizeof值. 例子: double m = 3.0; ; double *p=&m; int* p1=&n; printf("p:%d\n", p ); printf(); printf("P1:%d\n", p1); printf(); 如上图所示,p加了8,因为指向是double类型.p1加了4,因为指向了int. 现在我定义一个数组,int a[3]={0}…
sizeof,看起来还真不简单,总结起来还是一大堆的东西,不过这是笔试面试中出现比较频繁的,我也是考过才觉得很重要,有些规则如果不注意,还真是拿到一道题目摸不着头脑,所有总结一下,方面忘记的时候瞄一瞄,其中重点是struct的空间大小部分. 关于sizeof的总结 1.sizeof的使用形式:sizeof(var_name)或者sizeof var_name 2.变量名可以不用括号括住:sizeof a 3.数据类型必须用括号括起来:sizeof(int) 4.sizeof可以对表达式求值:si…
1. 定义:sizeof是C/C++中的一个操作符(operator),作用就是返回一个对象或者类型所占的内存字节数.返回 值类型为size_t,在头文件stddef.h中定义.这是一个依赖于编译系统的值,一般定义为typedef unsigned int size_t;编译器林林总总,但作为一个规范,都会保证char.signed char和unsigned char的sizeof值为1,毕竟char是编程能用的最小数据类型. MSDN上的解释为:The sizeof keyword give…
sizeof运算符返回一条表达式或一个类型名字的所占字节数,返回值为size_t的常量表达式,注意:sizeof右结合,且为编译时计算,而非运行时 两种形式:sizeof (type)和sizeof expression sizeof计算的永远是类型所占字节数,如果是数组则计算数组的长度乘以元素类型字节数:所以对于第二种形式,计算的是expression表达式结果的类型大小,而不是表达式的值 sizeof运算符不是实际求表达式的值,所以sizeof *p,即使p是无效指针,也是安全的,得到的是*…
要想知道c++类对象的内存布局, 可以有多种方式,比如: 1)输出成员变量的偏移, 通过offsetof宏来得到 2)通过调试器查看, 比如常用的VS 1.没有数据成员的对象 class A{ }; int main() { A arr[] = { A(),A(),A() }; cout << sizeof(A) << endl; //输出1 int n = sizeof(arr) / sizeof(A); //为了防止分母为0,发生错误 cout << n <&…
Sizeof() 判断数据类型长度符的关键字 sizeof用法 sizeof(类型说明符,数组名或表达式); 或sizeof (变量名); 定义 sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数. 其返回值类型为size_t,在头文件stddef.h中定义. 在C99及以上标准中,sizeof(char).sizeof(int).sizeof(long).sizeof(long long).sizeof(float).sizeof…
提示:下文例子都经过Visual C++ 6.0验证,平台为win32 Windows. 一.什么是sizeof 首先看一下sizeof在msdn上的定义: The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t. 看到…
sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下.但当我总结的时候才发现,这个问题既可以简单,又可以复杂,所以本文有的地方并不适合初学者,甚至都没有必要大作文章.但如果你想“知其然,更知其所以然”的话,那么这篇文章对你或许有所帮助.菜鸟我对C++的掌握尚未深入,其中不乏错误,欢迎各位指正啊1. 定义:sizeof是何方神圣sizeof乃C/C++中的一个操作符(operator)是也,简单的说其作…
sizeof  C语言中判断数据类型或者表达式长度符:关键字:字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来! 一.关于sizeof简单的总结 1.sizeof的使用形式:sizeof(var_name)或者sizeof var_name 2.变量名可以不用括号括住:sizeof a 3.数据类型必须用括号括起来:sizeof(int) 4.sizeof可以对表达式求值:sizeof(2+3.14),实际是sizeof(double) 5.sizeof可以对函数调用求值,实际上…
http://www.cnblogs.com/chio/archive/2007/06/11/778934.html sizeof不是函数,更像一个特殊的宏,它是在编译阶段求值得.sizeof作用范围内即()里面的内容是被替换成类型 ; cout << == ) << endl; cout << ) << endl; cout << a << endl; 输出1,4,0 sizeof有两种用法: (1)sizeof(object) 或…
一.文章来由-一道面试题迁出的探究 我发现我已经形成一种习惯写来由了,以后看博客的时候能够让我回顾起为什么出现这个问题,我用什么方法解决的,既然形成习惯就让这个习惯保持下去吧.今天实验室师姐在看书,一处不解.是关于sizeof的,大家讨论此问题后,我一向信服做了才知道答案,于是有了这篇文章. 可是仅仅能叫小览,由于不可能总结完sizeof的使用方法,欢迎补充和讨论. 二.从这道题目说起 我直接将问题的关键部分提出来: string strArr1[] = { "Trend", &quo…
源地址:http://blog.csdn.net/freefalcon/article/details/54839 0. 前向声明 sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下. 但当我总结的时候才发现,这个问题既可以简单,又可以复杂,所以本文有的地方并不适合初学者,甚至都没有必要大作文章.但如果你想“知其然,更知其所以然”的话,那么这篇文章对你或许有所帮助. 菜鸟我对C++的掌握尚未深入,其…