12 2018 档案

摘要:一、什么是内存对齐,为什么要内存对齐 现在计算机内存空间都是按照byte字节划分的,理论上讲对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址上访问,这就需要各种数据类型按照一定的规则在空间上排列,而不是一个接一个的排放,这就是内存对齐。 cpu对内存 阅读全文
posted @ 2018-12-25 17:10 long_ago 阅读(5141) 评论(1) 推荐(0)
摘要:一、sizeof关键字 sizeof是c/c++中的一个关键字,其作用是取得一个对象(数据类型或数据对象)的长度(即占用内存的大小,一byte字节为单位)。其计算对象占用内存大小的过程在编译时刻。 1 int a=1; 2 int b=sizeof(++a); 3 printf("%d",a); 4 阅读全文
posted @ 2018-12-25 11:26 long_ago 阅读(818) 评论(0) 推荐(0)
摘要:一、简述三种关键字使用 const:定义常变量,即只读变量。 enum:枚举类型,在实际问题中有些变量的取值被限定在一定的范围内,例如一个星期七天,一年十二个月,如果把这些变量说明为整形,字符型等类型显然是不合适的,为此有了enum枚举类型,在枚举类型的定义中列举出所有可能的值,被说明为该类型的变量 阅读全文
posted @ 2018-12-25 10:40 long_ago 阅读(942) 评论(0) 推荐(0)
摘要:一、struct关键字与柔性数组 c语言中的struct可以看做变量的集合,struct中的每个数据成员都有独立的存储空间 柔性数组:柔性数组在C99中也称之为伸缩型数组,是C99的扩展,简言之就是struct结构里的标识占位符(不占用struct的空间),柔性数组的结构只能在堆上生成。 声明柔性数 阅读全文
posted @ 2018-12-25 10:26 long_ago 阅读(894) 评论(0) 推荐(0)
摘要:一、数据类型所占用字节数与机器字长与编译器有关,遵循的几条规律如下: sizeof(short int )<=sizeof(int) sizeof(int)<=sizeof(long int) short int 至少应为16位(2个字节) long in 至少应为32位(4个字节) 二、常见数据类 阅读全文
posted @ 2018-12-25 08:27 long_ago 阅读(17068) 评论(0) 推荐(2)
摘要:一、c语言五大内存分区 二、可执行程序程序三段-Text段,Date段,Bss段 1.一个程序的3个基本段:text段,dtae段,bss段 text段在内存中被映射为只读,但date段与bss段是可写的 text段:代码段,就是放程序代码的,编译时确定,只读 date段:存放在编译阶段(而非运行时 阅读全文
posted @ 2018-12-24 09:39 long_ago 阅读(8458) 评论(0) 推荐(1)
摘要:一、static关键字三个作用 定义全局静态变量,定义局部静态变量,定义静态函数 二、c语言中static作用 (1):不想被释放的时候可以用static修饰。比如修饰函数中存放在栈空间的数组,如果不想让这个数组在函数调用结束释放则可以使用static修饰。 (2):考虑到数据本地化与代码范围的好处 阅读全文
posted @ 2018-12-23 21:36 long_ago 阅读(1702) 评论(0) 推荐(0)
摘要:虽然const定义的是变量但又相当于常量,说它是常量又有变量的属性,所以叫常变量。 const定义的变量是不允许改变的,不允许给他重新赋值,必须在定义的时候赋值。 2.const关键字作用 const用于定义常量,const定义的常量编译器可以对其进行数据静态类型安全检查 const修饰函数形参,当 阅读全文
posted @ 2018-12-23 20:36 long_ago 阅读(1434) 评论(0) 推荐(0)
摘要:数据类型关键字(12个):char,double,enum,float,int,long,short,signed,unsigned,struct,union,void 控制语句关键字(12个): 循环语句:for,do,while,break,continue 条件语句:if,else,goto 阅读全文
posted @ 2018-12-23 16:30 long_ago 阅读(895) 评论(0) 推荐(0)
摘要:c语言中用到很多宏定义 ,为了头文件被重复用到#ifndef #define,#ifdefine edfif等条件编译 宏不是语句,结尾不用加“;”,否则会被替换进进程中 #表示这是一条预处理指令 如果写宏不止一行,则在结尾加反斜杠使多行能连接上,但第二行要对齐,否则空格也会作为替换文本的一部分 2 阅读全文
posted @ 2018-12-21 12:17 long_ago 阅读(10875) 评论(1) 推荐(3)
摘要:main()函数不一定是程序的入口,在内核中可以使用链接器设置程序的开始地方。当内核使用一个exec函数执行c程序的时候,在main函数之前要先调用一个特殊的启动例程,可执行程序将此例程指定为程序的起始地址。启动例程从内核获取命令行参数和环境变量,然后为调用main函数做好准备。 2.exit(), 阅读全文
posted @ 2018-12-20 21:31 long_ago 阅读(820) 评论(0) 推荐(0)
摘要:预处理--编译--汇编--链接 预处理:用于将所有#include头文件及#define等宏定义替换成真正的内容,预处理后的得到的仍然是文本文件,但体积会大。 1.将头文件中的内容(源文件之外的文件)插入到源文件中 2.进行了宏替换的过程,定义和替换了由#define指令定义的符号 3.删除注释的过 阅读全文
posted @ 2018-12-20 20:20 long_ago 阅读(3065) 评论(0) 推荐(1)
摘要:使用临时变量进行交换 使用加减运算进行交换 使用异或运算进行交换 2.上述的三个swap()函数均为引用传参的方式 swap2(int &a,int &b)有可能会发生数据溢出的情况,相比较而言使用swap3()比较好 阅读全文
posted @ 2018-12-20 11:43 long_ago 阅读(745) 评论(0) 推荐(0)
摘要:形参与实参 形参即形式上的参数,对实参的一种抽象类型描述只是声明一个函数能够接受什么类型的实参,而不确定接受的实参的具体内容是什么 实参即传递给函数对应形参的具体内容 形参即形式上的参数,对实参的一种抽象类型描述只是声明一个函数能够接受什么类型的实参,而不确定接受的实参的具体内容是什么 实参即传递给 阅读全文
posted @ 2018-12-20 11:08 long_ago 阅读(21892) 评论(0) 推荐(3)
摘要:数据存储方式 计算机中数据都是以二进制进行存储的 正数为原码形式,负数为二进制补码形式 假定以字长为两个字节的机器为例int a=7 signed int a=7 存储方式:0000 0000 0000 0111 signed int a=-7 存储方式: 1111 1111 1111 1001 u 阅读全文
posted @ 2018-12-20 09:27 long_ago 阅读(2291) 评论(0) 推荐(0)
摘要:对于内建数据类型,两者之际无差别,效率差别不大 自定义数据类型 前缀i++可以返回对象的引用而后缀i++必须返回对象的值,所以会产生较大的复制开销,引起效率降低。 对于C++里的类,那++i和i++两个是运算符重载 1 class INT; 2 //++i 的版本 3 INT INT::operat 阅读全文
posted @ 2018-12-20 08:41 long_ago 阅读(315) 评论(0) 推荐(0)