sizeof

剑指Offer 刷题笔记

情到浓时终转凉″ 提交于 2020-02-04 07:18:28
1.sizeof运算符 (1) 定义 sizeof是一个操作符(operator)。 其作用是返回一个对象或类型所占的内存字节数。(返回一条表达式或者一个类型名字所占的字节数。——C++ Primer) (2) 语法 sizeof有三种语法形式: 1) sizeof (object); //sizeof (对象) 2) sizeof object; //sizeof 对象 3) sizeof (type_name); //sizeof (类型) 对象可以是各种类型的变量,以及表达式(一般sizeof不会对表达式进行计算)。 sizeof对对象求内存大小,最终都是转换为对对象的数据类型进行求值。 sizeof (表达式); //值为表达式的最终结果的数据类型的大小 (3) 数组的sizeof 数组的sizeof值等于数组所占用的内存字节数。 注意:1)当字符数组表示字符串时,其sizeof值将’/0’计算进去。 2)当数组为形参时,其sizeof值相当于指针的sizeof值。 参考链接 来源: CSDN 作者: Gavynlee 链接: https://blog.csdn.net/weixin_43892514/article/details/104157262

判断两个数组中是否有相同的元素,有就输出“有”,没有就输出“没有”

微笑、不失礼 提交于 2020-02-03 18:03:44
//建立两个数组,让第一个数组的内容以此与第二个数组的内容比较。 #include<stdio.h> int main() { int arr1[]={1,2,3,4,5,6,7,8}; int arr2[]={9,10,11,26}; int count = 0; int i; for(i=0; i < sizeof(arr1)/sizeof(arr1[0]); i++) { int j; for(j=0; j<sizeof(arr2)/sizeof(arr2[0]); j++) { if(arr1[i] == arr2[j]) { count ++; break; } } if (count != 0) break; } if(count != 0) printf("Have\n"); else printf("No Have\n"); return 0; } 来源: CSDN 作者: 茉茗柒杪 链接: https://blog.csdn.net/Cherry_jim/article/details/104157331

sizeof和strlen在string类中的使用

只谈情不闲聊 提交于 2020-02-03 08:38:42
字符串的sizeof和strlen 考虑下面的问题: char a[] = "abcdef"; char b[20] = "abcdef"; string s = "abcdef"; cout<<strlen(a)<<endl; // 6,字符串长度 cout<<sizeof(a)<<endl; // 7,字符串容量 cout<<strlen(b)<<endl; // 6,字符串长度 cout<<sizeof(b)<<endl; // 20,字符串容量 cout<<sizeof(s)<<endl; // 32, 这里不代表字符串的长度,而是string类的大小,要想知道s字符串的长度,要用sizeof(s.c_str()) cout<<strlen(s)<<endl; // 错误!s不是一个字符指针。 a[1] = '\0'; cout<<strlen(a)<<endl; // 1 cout<<sizeof(a)<<endl; // 7,sizeof是恒定的 strlen是寻找从指定地址开始,到出现的第一个0之间的字符个数,他是在运行阶段执行的,而sizeof是得到数据的大小,在这里是得到字符串的容量 。所以对同一个对象而言,sizeof的值是恒定的。string是C++类型的字符串,他是一个类,所以 sizeof(s)表示的并不是字符串的长度,而是类string的大小

sizeof 和 strlen 计算数组大小和长度详解

廉价感情. 提交于 2020-02-03 08:28:26
sizeof 首先sizeof并非为一个函数,而是C语言中的一个关键字。 sizeof计算对象所占内存的大小,判断操作数的类型长度,以字节为单位; 指针在32位系统占4个字节,在64位系统占8个字节,本实例都在32位机器上操作。 sizeof 求大小看的仅仅是它的类型大小,而非其他。所以我们在计算时只要认清楚它的类型大小就行。 arr 和 &arr 的区别. int arr[10] = { 0 ); arr -> 本意为数组arr 的第一个元素的地址,但是在 sizeof (arr) 中被特殊化为求整个数组 arr 的大小(这是一个特例),所以 sizeof (arr) = 40; &arr -> 意思为整个数组的内存地址,所以 sizeof (&arr) = 4;(因为它是一个数组指针) arr + 1 和 &arr + 1 的区别 arr 为首元素的地址 *,arr + 1 -> 即加了一个int * (4)的大小. &arr 为数组的地址, 数组的地址 + 1 -> 即跳过了整个数组的大小,所以相当于加了 40; <1> char arr [ ] = { 'a' , 'b' , 'c' , 'd' } ; 1. printf ( "%d\n" , sizeof ( arr ) ) ; //4 2. printf ( "%d\n" , sizeof ( arr + 0 ) )

ACM基础(一)

走远了吗. 提交于 2020-02-02 03:25:05
比较大的数组应尽量声明在main函数外,否则程序可能无法运行。 C语言的数组并不是“一等公民”,而是“受歧视”的。例如,数组不能够进行赋值操作: 在程序3-1中,如果声明的是“int a[maxn],b[maxn]”,是不能赋值b=a的。如果要从数组a复 制k个元素到数组b,可以这样做:memcpy(b,a,sizeof(int)*k)。当然,如果数组a和b 都是浮点型的,复制时要写成“memcpy(b,a,sizeof(double)*k)”。 另外需要注意的是, 使用memcpy函数要包含头文件string.h。如果需要把数组a全部复制到数组b中,可以写得简单 一些:memcpy(b,a,sizeof(a))。 “memset(a,0,sizeof(a))”的作用是把数组a清零,它也在string.h中定义。虽然也能 用for循环完成相同的任务,但是用memset又方便又快捷。 函数strlen(s)的作用是获取字符串s的实际长度。什么叫实际长度呢?字符数组s的大小是 20,但并不是所有空间都用上了。如果输入是“2357”,那么实际上s只保存了5个字符(不要 忘记了还有一个结束标记“\0”),后面15个字符是不确定的(还记得吗?变量在赋值之前是 不确定的)。strlen(s)返回的就是结束标记之前的字符个数。因此这个字符串中的各个字符 依次是s[0], s[1],…, s

第3章 数组和字符串

半城伤御伤魂 提交于 2020-02-02 03:22:25
3.1 数组 1.在算法竞赛中,常常难以精确计算出需要的数组大小,数组一般会声明得稍大一些。在空间够用的前提下,浪费一点是不会有太大影响。 2.比较大的数组应尽量声明在main函数外,否则程序可能无法运行。 3.整型数组a复制k个元素到数组b,memcpy(b,a,sizeof(int)*k。 浮点型数组复制,memcpy(b,a,sizeof(double)*k)。 需包含头文件string.h。 全部复制,memcpy(b,a,sizeof(a)) 4.开灯问题 memset(a,0,sizeof(a))的作用是把数组a清零,在string.h中定义 练习 5.蛇形填数 四个方向遍历的代码 潜在bug,如果越界,x+1会等于n,但由于短路不会造成后面a[x+1][y]访问非法内存。 练习 3.2 字符数组 1.竖式问题 找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合,输出所有竖式。每个竖式前都应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但所写程序中应该输出空格,而非小数点)。 样例输入: 2357 样例输出: <1> ..775 X..33 ------ 25575 scanf("%s",s),读入字符串 printf输出到屏幕

网络流学习笔记

随声附和 提交于 2020-02-02 00:37:36
最大流 ​ 我再次博客上暂不叙述预留推进(SAP), 事实是,我不会 ,暂且搁置,以后会补充 ​ 最大流在实际问题中的应用是,你要从一个源点s送水至汇点t,这些点中有水管链接,水管的最大能通过的水有不同,让你求单位时间内你最多能送多少水。 ​ 我们的流网络可以理解为一群有向边图 ​ 一些想法 ​ 我们定义 \(f(u,v)\) 为u节点到v节点的流量。, \(c(u,v)\) 为u节点到v节点的流量限制 ​ 首先我们由于不能爆水管,有这个显而易见的式子 \[ 0 \le f(u,v) \le c(u,v) \] ​ 其次我们来,思考一下对于每个节点的的流出和流入,显然的我们可以把KCL(即Kirchhoff's Current Law),推广到oi界上,我们有 \[ \sum _{v\in V} f(v,u)=\sum_{v \in V} f(u,v) \] ​ 想法结束进入正题 ​ 经过度娘的帮助,我们知道一种叫做增广路的东西,在一个残余网络(就是说某些管子已经有水了),就是说从源节点到汇节点的一条能走水的路径 ​ 这样我们知道,假如,我们一遍又一遍的操作之后,没有增广路可以找了,那么我们必定求出了最大流 ​ 然而怎么寻找增广路,这是一个问题。 ​ 经过思考之后我们可以用一个十分暴力的思想来解决,进行深搜,主要思想是 我们可以每一次从原点开始深搜 搜到汇节点

轻松掌握c语言中的sizeof

﹥>﹥吖頭↗ 提交于 2020-02-01 14:44:45
网上有很多文章已经详细讲述过sizeof的用法,但是我觉得其实sizeof并没有那么复杂。在这儿简单地再总结一下。 1,是什么? sizeof其实就是一个运算符,和那些+,-一样的东西,在程序编译的时候进行解析转换。虽然我们经常见到sizeof后面跟着个小括号,长得和函数差不多,但它和函数完全是两码事。 2,有什么用? sizeof其实就是用于告诉我们编译器在为某一特定数据或者某种数据类型的数据在存储空间中开辟空间时,开辟的空间大小,以字节为单位。 3,怎么用? sizeof(类型),或者sizeof(变量)都可以,得到的就是类型或者变量的存储空间。当对变量用的时候,也可以没有括号,直接 sizeof 变量,但一般不用(我一般都是只记一种通用的用法……)。 4,用的时候要注意什么? (1)sizeof返回的占用空间大小是为这个变量开辟的大小,而不只是它用到的空间。和现今住房的建筑面积和实用面积的概念差不多。所以对结构体用的时候,大多情况下就得考虑字节对齐的问题了。 (2)对位域成员等连编译器都无法确定存储空间的东西不能用。这个应该比较好理解,因为sizeof返回的都是以字节为单位的数据,你让它去求那些以位为单位的大小,这不是存心难为编译器嘛。所以编译器采用的方案是统一不受理,即使你说你刚好是8位,占一个字节,编译器也不理你。 (3)sizeof返回的数据类型是unsigned

gcc 的 __attribute__ 关键字简介

╄→尐↘猪︶ㄣ 提交于 2020-02-01 12:29:07
gcc 的 __attribute__ 关键字简介 参考文档见: https://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Variable-Attributes.html#Variable-Attributes https://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Type-Attributes.html#Type-Attributes https://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Function-Attributes.html#Function-Attributes __attribute__ 可以设置函数属性,变量属性,类型属性。 一、函数属性 __attribute__可以把一些特性添加到函数声明中,从而可以使编译器帮助做更多的错误检查。 __attribute__(format(printf, m, n)) m 第m个参数为格式化字符串 n 参数集合中的第一个,即参数"…"里的第一个参数在函数参数总数排在第n, 如果是类的成员函数,此值加1,因为有this指针 一个简单的示例程序。这个示例程序并没有什么用处,仅仅是通过了编译和运行,证明了语法的正确。 // gcc -Wall test.c #include <stdio.h> #include <stdlib

HIT1917Peaceful Commission(2-SAT)

雨燕双飞 提交于 2020-02-01 10:04:20
Peaceful Commission Source : POI 2001 Time limit : 10 sec Memory limit : 32 M Submitted : 2112, Accepted : 641 The Public Peace Commission should be legislated in Parliament of The Democratic Republic of Byteland according to The Very Important Law. Unfortunately one of the obstacles is the fact that some deputies do not get on with some others. The Commission has to fulfill the following conditions: Each party has exactly one representative in the Commission, If two deputies do not like each other, they cannot both belong to the Commission. Each party has exactly two deputies in the