![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 85
Yangmila
愿努力能撑起所愿。
展开
-
C语言 文件操作
文件分类程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。数据文件文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。数据文件类型数据文件被称为文本文件或者二进制文件。二进制文件:数据在内存中以二进制的形式存储,如果不加转换的输出到外存。文本文件:如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件。文件缓冲区A原创 2021-01-17 16:21:14 · 100 阅读 · 0 评论 -
动态内存函数
一、malloc函数1、函数介绍头文件:#include <stdlib.h>void *malloc( size_t size );如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。如果参数 size 为0,malloc的行为是标准是未定义的,取决于编译器。2、函数怎么调用(1)申请多大自己计算;原创 2020-11-30 23:01:51 · 183 阅读 · 0 评论 -
枚举和联合体
1、枚举(enum)(1)什么是枚举枚举顾名思义就是一一列举。把可能的取值一一列举。enum Color//颜色{ RED, GREEN, BLUE};以上定义的 enum Color 是枚举类型。 {}中的内容是枚举类型的可能取值,也叫枚举常量 。(2)枚举的值这些可能取值都是有值的,默认从0开始,一次递增1,当然在定义的时候也可以赋初值。若前一个枚举常量赋了初值,那下一个没赋初值的枚举常量就等于上一个加一。例如:enum Color//颜色{ RED,//0 GRE原创 2020-11-28 11:47:57 · 331 阅读 · 0 评论 -
位段
1、什么是位段位段(bit-field)是以位为单位来定义结构体(或联合体)中的成员变量所占的空间。含有位段的结构体(联合体)称为位段结构。采用位段结构既能够节省空间,又方便于操作。位段的声明和结构是类似的,有两个不同:1)位段的成员必须是 int、unsigned int 或signed int 。2)位段的成员名后边有一个冒号和一个数字。比如:struct node{ unsigned int a:4; //位段a,占4位 unsigned int :0;原创 2020-11-28 11:29:51 · 2687 阅读 · 1 评论 -
结构体内存对齐
一、结构体的声明结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。struct 结构体名字 { 类型 名字; 类型 名字; 类型 名字; ... }结构体变量1,结构体变量2……;二、结构体内存对齐1、为什么存在内存对齐?1)平台原因(移植原因)︰不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2)性能原因︰数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于原创 2020-11-26 23:32:26 · 137 阅读 · 0 评论 -
浮点数与定点数
一、定点数二、浮点数根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数V可以表示成下面的形式:举例︰十进制的5.0,写成二进制是101.0,相当于1.01x2N2。那么,按照上面V的格式,可以得出s=0,M=1.01,E=2。十进制的-5.0,写成二进制是-101.0,相当于-1.01×2N2。那么,s=1,M=1.01,E=2。IEEE754规定:对于32位的浮点数,最高的1位是符号位s,接着的8位是指数E,剩下的23位为有效数字M。注意:首先,E为一个无符号整原创 2020-11-25 17:33:28 · 3915 阅读 · 0 评论 -
计算机原码,反码,补码
一、基本概念无符号数只有大小,而无正负属性的数。3、1011、7B在计算机中表示时,二进制位的每一位均表示数值的大小。有符号数同时具有大小及正负属性的数。+3、-1011、-7B在计算机中表示时,二进制数的最高一位或两位用来表示数的正负。(机器数)机器数把有符号数的正负号数值化(用二进制0、1表示)后的原码、反码、补码、变形码等形式即为机器数。所以说原码、反码、补码、变形码都是机器数。真值就是机器数所要真实表达的数值。通产符号使用“+”、“-”表示,可以是10进制、二进制等。例如:-32原创 2020-11-25 16:59:54 · 614 阅读 · 0 评论 -
字符串函数模拟
函数介绍1、strlen返回字符串 s1 的长度。size_t strlen ( const char * str );·字符串已经’\0’作为结束标志,strlen函数返回的是在字符串中’\O’前面出现的字符个数(不包含’\0’)。·参数指向的字符串必须要以‘\0’结束。·注意函数的返回值为size_t,是无符号的。2、strcpy复制字符串 s2 到字符串 s1。char* strcpy(char * destination,const char * source );·源字符串原创 2020-11-24 19:15:44 · 90 阅读 · 0 评论 -
strstr的模拟实现
一、函数声明char *strstr(const char *hay, const char *need)strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回 str1字符串从 str2第一次出现的位置开始到 str1结尾的字符串;否则,返回NULL。参数haystack – 要被检索的 C 字符串。needle – 在 haystack 字符串内要搜索的小字符串。返回值该函数返回在 haystack 中第一次出现 needle 字符串的位原创 2020-11-24 18:42:41 · 164 阅读 · 0 评论 -
memmove和memcpy的模拟实现
一、函数声明memcpyvoid * memcpy ( void * destination,const void * source,size_t num );·函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。·这个函数在遇到’\0’的时候并不会停下来。·如果source和destination有任何的重叠,复制的结果都是未定义的。memmovevoid * memmove ( void * destination,const void原创 2020-11-24 17:23:46 · 935 阅读 · 4 评论