sizeof

C++数据类型

我怕爱的太早我们不能终老 提交于 2019-12-18 22:54:54
学了C然后C++,然后MFC/Windows,然后是C#,其中数据类型很多,由基本类型衍生的typedef类型也N多。熟知基本数据类型是我们正确表达实际问题中各种数据的前提,因此我分类总结了一下C/C++/Windows /C#基本数据类型,以便日后查阅。 ANSI C/C++基本数据类型: Type Size 数值范围 无值型void 0 byte 无值域 布尔型bool 1 byte true false 有符号短整型short [int] /signed short [int] 2 byte -32768~32767 无符号短整型unsigned short [int] 2 byte 0~65535 有符号整型int /signed [int] 4 byte -2147483648~2147483647 无符号整型unsigned [int] 4 byte 0~4294967295 有符号长整型long [int]/signed long [int] 4 byte -2147483648~2147483647 无符号长整型unsigned long [int] 4 byte 0~4294967295 long long 8 byte 0~18446744073709552000 有符号字符型char/signed char 1 byte -128~127

NOIP经典基础模板总结

时光总嘲笑我的痴心妄想 提交于 2019-12-18 18:54:32
date: 20180820 spj: 距离NOIP还有81天 目录 STL模板: priority_queue 的用法:重载<,struct cmp queue 的用法 stack 的用法 vector的用法 map和set的用法 * 遍历容器中得所有元素 dequeue双端队列的用法 基础数论模板: gcd ex_gcd 求phi():筛选法、定义法 筛选法求质数 判断质数的一般方法 快速幂 矩阵快速幂 求逆元的方法(递推式、快速幂、ex_gcd) 卢卡斯定理的实现 组合数朴素公式 组合数递推式(杨辉三角) 组合数取模 二项式定理 n的正约数个数(唯一分解定理的推导) ST表 裴蜀定理 高精度计算+-* *二项式反演 *离散概率 图论模板: floyd求最短路求最小环、图的传递闭包 spfa求最短路、dijkstra堆优化求最短路 kosaraju算法求强联通分量 tarjan求强联通分量 最小生成树 倍增LCA、tarjan LCA 并查集(启发式) 前向星存图 KM求最优匹配、匈牙利算法求最大匹配 FF算法求最大流 *最小费用最大流 树上Hash 数据结构模板: 树状数组模板(区间最大最小和) 线段树模板(区间最大最小和) 字典树(STL实现) 实数二分,整数二分答案 *线性基 字符串模板: 字符串哈希Hash(字符串必备) *KMP算法初步 *AC自动机 说明:打

How to find the size of a variable with out using sizeof

女生的网名这么多〃 提交于 2019-12-18 18:08:38
问题 Let us assume I have declared the variable 'i' of certain datatype (might be int, char, float or double) ... NOTE: Simply consider that 'i' is declared and dont bother if it is an int or char or float or double datatype. Since I want a generic solution I am simply mentioning that variable 'i' can be of any one of the datatypes namely int, char, float or double. Now can I find the size of the variable 'i' without sizeof operator? 回答1: You can use the following macro, taken from here: #define

sizeof(value) vs sizeof(type)?

久未见 提交于 2019-12-18 17:28:05
问题 Considering : double data; double array[10]; std::vector<int> vec(4, 100); MyClass myclass; Is there a difference between : sizeof(double); sizeof(double[10]); sizeof(std::vector<int>); sizeof(MyClass); and sizeof(data); sizeof(array); sizeof(vec); sizeof(myclass); Are the two syntaxes different or strictly equivalent ? Are all of them evaluated at compile-time ? If not, which one is evaluated at run-time ? 回答1: The only differences are in syntax and convenience. Syntactically, you're allowed

sizeof和strlen的区别

蹲街弑〆低调 提交于 2019-12-18 17:16:29
1. sizeof操作符的结果类型是size_t,它在头文件中的typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。 2. sizeof是算符,strlen是函数。 3. sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以“\0”结尾的。sizeof还可以用函数做参数,比如: short f();printf("%d\n", sizeof(f())); 输出结果是sizeof(short),即2。 4. 数组做sizeof的参数不退化,传递给strlen就退化为指针。 5. 大部分编译程序在编译的时候就把sizeof计算过了,是类型或是变量的长度。这就是sizeof(x)可以用来定义数组维数的原因: char str[20] = "0123456789";int a = strlen(str); // a=10int b = sizeof(str); // b=20 6. strlen的结果要在运行的时候才能计算出来,用来计算字符串的长度,而不是类型占内存的大小。 7. sizeof后如果是类型必须加括号,如果是变量名可以不加括号。这是因为sizeof是个操作符而不是个函数。 8. 当使用了一个结构类型或变量时,sizeof返回实际的大小。当使用一静态的空间数组时,sizeof返回全部数组的尺寸

Is sizeof… allowed in template arguments for specialization?

泪湿孤枕 提交于 2019-12-18 17:04:57
问题 I'm trying to do something along the lines of this using GCC 4.7 snapshot: template <int n, int... xs> struct foo { static const int value = 0; }; // partial specialization where n is number of ints in xs: template <int... xs> struct foo<sizeof...(xs), xs...> { // error: template argument ‘sizeof (xs ...)’ // involves template parameter(s) static const int value = 1; }; template <int... xs> struct foo<sizeof(xs), xs...> { // This compiles fine. sizeof(xs) is sizeof int // even though packs

Allocating char array using malloc

随声附和 提交于 2019-12-18 12:23:47
问题 Hi recently I saw a lot of code on online(also on SO;) like: char *p = malloc( sizeof(char) * ( len + 1 ) ); Why sizeof(char) ? It's not necessary, isn't it? Or Is it just a matter of style? What advantages does it have? 回答1: Yes, it's a matter of style, because you'd expect sizeof(char) to always be one. On the other hand, it's very much an idiom to use sizeof(foo) when doing a malloc , and most importantly it makes the code self documenting. Also better for maintenance, perhaps. If you were

sizeof与strlen的不同

孤街醉人 提交于 2019-12-18 11:13:26
sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。 该类型保证能容纳实现所建立的最大对象的字节大小。 sizeof是算符,strlen是函数。 sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。 sizeof还可以用函数做参数,比如: short f(); printf("%d\n", sizeof(f())); 输出的结果是sizeof(short),即2。 数组做sizeof的参数不退化,传递给strlen就退化为指针了。 大部分编译程序 在编译的时候就把sizeof计算过了 是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因 char str[20]="0123456789"; int a=strlen(str); //a=10; int b=sizeof(str); //而b=20; strlen的结果要在运行的时候才能计算出来,时用来计算字符串的长度,不是类型占内存的大小。 sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。 当适用了于一个结构类型时或变量, sizeof 返回实际的大小, 当适用一静态地空间数组, sizeof 归还全部数组的尺寸。 sizeof

字符数组,字符指针,Sizeof总结

痞子三分冷 提交于 2019-12-18 09:56:35
字符数组,字符指针,Sizeof总结 1.以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写 "abc",那么编译器帮你存储的是"abc\0" 2."abc"是常量吗?答案是有时是,有时不是。 不是常量的情况:"abc"作为字符数组初始值的时候就不是,如 char str[] = "abc"; 因为定义的是一个字符数组,所以就相当于定义了一些空间来存放"abc",而又因为 字符数组就是把字符一个一个地存放的,所以编译器把这个语句解析为 char str[3] = {'a','b','c'}; 又根据上面的总结1,所以char str[] = "abc";的最终结果是 char str[4] = {'a','b','c','\0'}; 做一下扩展,如果char str[] = "abc";是在函数内部写的话,那么这里 的"abc\0"因为不是常量,所以应该被放在栈上。 是常量的情况: 把"abc"赋给一个字符指针变量时,如 char* ptr = "abc"; 因为定义的是一个普通指针,并没有定义空间来存放"abc",所以编译器得帮我们 找地方来放"abc",显然,把这里的"abc"当成常量并把它放到程序的常量区是编译器 最合适的选择。所以尽管ptr的类型不是const char*,并且ptr[0] = 'x';也能编译 通过,但是执行ptr[0] =

第50课 C++对象模型分析(上)

狂风中的少年 提交于 2019-12-18 09:52:55
1. 回归本质 (1) class 是一种 特殊的结构体   ①在 内存 中 class 依旧可以看作 变量的集合   ② class 与 struct 遵循相同的 内存对齐规则   ③ class 中的 成员函数 与 成员变量 是分开存放 的。即 每个对象 有独立的成员变量 ,但 所有对象 共享类中的成员函数 。 【编程实验】 对象内存布局初探 #include <iostream> #include <string> using namespace std; class A { //默认访问权限为private int i; int j; char c; double d; public: void print() { cout << "i = " << i << ", " << "j = " << j << ", " << "c = " << c << ", " << "d = " << d << endl; } }; struct B { //默认访问权限为public int i; int j; char c; double d; }; int main() { A a; //class和struct在内存布局上是一样的。大小相同 cout << "sizeof(A) = " << sizeof(A) << endl; //24 bytes cout << "sizeof