柔性数组,数据类型大小

http://www.nowamagic.net/academy/detail/1204478

http://www.nowamagic.net/academy/detail/1204480

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3
 4 template<class T1, class T2>
 5 class MyPair { T1 first; T2 second; } ;
 6 class MyClass1 { char a, b; long double c; } ;
 7 class MyClass2 { long double a; char b; } ;
 8 class MyClass3 { char a; MyClass1 b; } ;
 9 class MyClass4 { char a; MyClass3 b; } ;
10 class MyClass5 { char a; int b; } ;
11 class MyClass6 { char a; MyClass5 b; } ;
12 class MyClass7 { char a, b; } ;
13 class MyClass8 { char a, *b; } ;
14
15 int main() {
16     cout << "vector " << sizeof(vector<int>) << endl;
17     cout << "map " << sizeof(map<int, int>) << endl;
18     cout << "multimap " << sizeof(multimap<int, int>) << endl;
19     cout << "set " << sizeof(set<int>) << endl;
20     cout << "multiset " << sizeof(multiset<int>) << endl;
21     cout << "priority_queue " << sizeof(priority_queue<int>) << endl;
22     cout << "deque " << sizeof(deque<int>) << endl;
23     cout << "queue " << sizeof(queue<int>) << endl;
24     cout << "stack " << sizeof(stack<int>) << endl;
25     cout << "list " << sizeof(list<int>) << endl;
26     cout << "string " << sizeof(string) << endl;
27     cout << "complex<double> " << sizeof(complex<double>) << endl;
28     cout << "bool[1 << 6] " << sizeof(bool[1 << 6]) << endl;
29     cout << "bool[1 << 6 | 1] " << sizeof(bool[1 << 6 | 1]) << endl;
30     cout << "bitset<1 << 6> " << sizeof(bitset<1 << 6>) << endl;
31     cout << "bitset<1 << 8> " << sizeof(bitset<1 << 8>) << endl;
32     cout << "int " << sizeof(int) << endl;
33     cout << "double " << sizeof(double) << endl;
34     cout << "long double " << sizeof(long double) << endl;
35     cout << "pair<int, int> " << sizeof(pair<int, int>) << endl;
36     cout << "pair<double, int> " << sizeof(pair<double, int>) << endl;
37     cout << "pair<double, long long> " << sizeof(pair<double, long long>) << endl;
38     cout << "pair<double, long double> " << sizeof(pair<double, long double>) << endl;
39     cout << "MyPair<long double, int> " << sizeof(MyPair<long double, int>) << endl;
40     cout << "MyClass1 " << sizeof(MyClass1) << endl;
41     cout << "MyClass2 " << sizeof(MyClass2) << endl;
42     cout << "MyClass3 " << sizeof(MyClass3) << endl;
43     cout << "MyClass4 " << sizeof(MyClass4) << endl;
44     cout << "MyClass5 " << sizeof(MyClass5) << endl;
45     cout << "MyClass6 " << sizeof(MyClass6) << endl;
46     cout << "MyClass7 " << sizeof(MyClass7) << endl;
47     cout << "MyClass8 " << sizeof(MyClass8) << endl;
48     return 0;
49 }

——written by LyonLys

柔性数组,数据类型大小

时间: 2024-08-09 09:20:25

柔性数组,数据类型大小的相关文章

柔性数组-读《深度探索C++对象模型》有感 (转载)

最近在看<深度探索C++对象模型>,对于Struct的用法中,发现有一些地方值得我们借鉴的地方,特此和大家分享一下,此间内容包含了网上搜集的一些资料,同时感谢提供这些信息的作者. 原文如下: 例如,把单一元素的数组放在一个struct的尾端,于是每个struct objects可以拥有可变大小的数组.    code: struct mumble { //stuff char pc[1];    };        //从档案或标准输入装置中取得一个字符串,然后为struct本身和该字符串配置

C语言柔性数组讲解

#include<stdio.h> typedef struct _SoftArray{ int len; int array[]; }SoftArray; int main() { int len = 10; printf("The struct's size is %d\n",sizeof(SoftArray)); } 我们可以看出,_SoftArray结构体的大小是4,显然,在32位操作系统下一个int型变量大小刚好为4,也就说结构体中的数组没有占用内存.为什么会没有

C语言柔性数组和动态数组

[前言]经常看到C语言里的两个数组,总结一下. 一.柔性数组 参考:https://www.cnblogs.com/veis/p/7073076.html #include<stdio.h> typedef struct _SoftArray{ int len; int array[]; }SoftArray; int main() { int len = 10; printf("The struct's size is %d\n",sizeof(SoftArray));

c语言关键字-struct,union,enum及柔性数组

一.struct关键字与柔性数组 c语言中的struct可以看做变量的集合,struct中的每个数据成员都有独立的存储空间 柔性数组:柔性数组在C99中也称之为伸缩型数组,是C99的扩展,简言之就是struct结构里的标识占位符(不占用struct的空间),柔性数组的结构只能在堆上生成. 声明柔性数组的规则 柔性数组成员必须为结构(struct)中的最后一个成员 结构中至少有一个其他成员 柔性数组就像普通数组一样被声明,除了它的方括号内为空 1 struct softarry 2 { 3 int

结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法

结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:(1).不需要初始化,数组名直接就是所在的偏移:(2).不占任何空间,指针需要占用int长度空间,空数组不占任何空间.“这个数组不占用任何内存”,意味着这样的结构节省空间:“该数组的内存地址就和它后面的元素地址相同”,意味着无需初始化,数组名就是后面元素的地址,直接就能当指针使用. 这样的写法最适合制作动态buffer,因为可以这样分配空间malloc(sizeof(struc

柔性数组

柔性数组 * 柔性数组即数组大小待定的数组 * C语言中结构体的最后一个元素可以是大小未知的数组 * C语言中可以由结构体产生柔性数组 #include <stdio.h> #include <malloc.h> typedef struct _soft_array { int len; int array[]; }SoftArray; int main() { int i = 0; SoftArray* sa = (SoftArray*)malloc(sizeof(SoftArr

程序猿之---C语言细节29(#define宏大小、空结构体大小、柔性数组不知道你见过没)

主要内容:#define宏大小.空结构体大小.柔性数组 一.#define宏大小 见例子 二.空结构体大小 根编译器有关 三.柔性数组 不常用,可看看 #include <stdio.h> #define N 4 #define STR "abcd" int main() { struct student { }stu; printf("N = %d\n", sizeof(N)); printf("num 5 memery = %d\n&quo

柔性数组成员 (flexible array member)-C99-ZZ

学习flexible array member是因为阅读Redis源码遇到的,sds.h中一开始就用到了. ============================================================================================== 在讲述柔性数组成员之前,首先要介绍一下不完整类型(incomplete type).不完整类型是这样一种类型,它缺乏足够的信息例如长度去描述一个完整的对象. 6.2.5 Types incomplete

关于柔性数组的一些问题

柔性数组结构成员 结构中的最后一个元素同意是未知大小的数组,这就叫做柔性数组成员,但结构中的柔性数组成员前面必须至少一个其 他成员.柔性数组成员同意结构中包括一个大小可变的数组.sizeof返回的这样的结构大小不包括柔性数组的内存. 包括柔性数组成员的结构用malloc ()函数进行内存的动态分配,而且分配的内存应该大于结构的大小,以适应柔性数组的预期大小. 结构体变长的妙用--0个元素的数组 有时我们须要产生一个结构体.实现了一种可变长度的结构. 怎样来实现呢? 看这个结构体的定义: type