
C语言
文章平均质量分 62
一些C语言知识的介绍
我要满血复活
厦门大学计算机科学与技术学生,简单记录学习路程
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
位操作符详解以及应用
位操作符详解以及应用原创 2023-11-07 09:05:14 · 155 阅读 · 2 评论 -
qsort的使用及模拟实现
比较浮点型数据的大小时,对于double类型的数据,一般两个数据的差值小于等于1e-15时可视为相等,因为double类型的数据一般只能精确保存到第15位小数,后面数据会出现误差。float类型的数据同理,一般两个数据的差值小于等于1e-6时可视为相等。- nmemb表示该数组的元素个数。- base指向数组的起始地址,通常该位置传入的是一个数组名。:qsort()函数的功能是对数组进行排序,数组有nmemb个元素,每个元素大小为size。- 此为指向比较函数的函数指针,决定了排序的顺序。原创 2023-11-18 20:50:12 · 105 阅读 · 2 评论 -
C语言中strerror以及perror函数详解
函数原型:功能:strerror函数可以把参数部分错误码对应的错误信息的字符串地址返回来。在不同的系统和C语⾔标准库的实现中都规定了⼀些错误码,⼀般是放在errno.h这个头⽂件中说明的,C语⾔程序启动的时候就会使⽤⼀个全⾯的变量errno来记录程序的当前错误码,只不过程序启动的时候errno是0,表⽰没有错误,当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会讲对应的错误码,存放在errno中,⽽⼀个错误码的数字是整数很难理解是什么意思,所以每⼀错误码都是有对应的错误信息的。原创 2023-11-25 20:59:57 · 717 阅读 · 0 评论 -
C语言内存函数(memcpy,memmove,memcmp)详解
源空间和⽬标空间出现重叠,使用memcpy和memmove的结果不同,因为memcpy执行过程中会把source的内容改变,进而影响之后的复制,在这种时候就得使⽤memmove函数处理。和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。3.如果source和destination有任何的重叠,复制的结果都是未定义的,即对于自身复制时会出现问题,此时应该使用memmove。功能:memmove的功能和memcpy基本相同,但memmove更强大,适用的范围更广,原创 2023-11-26 16:07:22 · 539 阅读 · 2 评论 -
C语言浮点数在内存中的存储
浮点数存的过程。原创 2023-11-28 21:14:34 · 899 阅读 · 1 评论 -
计算结构体的大小,结构体内存对齐
如果我们能保证将所有的double类型的数据的地址都对⻬成8的数,那么就可以⽤⼀个内存操作来读或者写值了。体的整体⼤⼩就是所有最⼤对⻬数(含嵌套结构体中成员的对⻬数)的整数倍。- Linux中 gcc 没有默认对⻬数,对⻬数就是成员⾃⾝的⼤⼩。2. 其他成员变量要对⻬到某个数字(对⻬数)的整数倍的地址处。(结构体中每个成员变量都有⼀个对⻬数,所有对⻬数中最⼤的)的。对⻬数 = 编译器默认的⼀个对⻬数 与 该成员变量⼤⼩的。4. 如果嵌套了结构体的情况,嵌套的结构体成员对⻬到。取消设置的对⻬数,还原为默认。原创 2023-12-02 11:29:10 · 568 阅读 · 0 评论 -
C语言文件操作
每个被使⽤的⽂件都在内存中开辟了⼀个相应的⽂件信息区,⽤来存放⽂件的相关信息(如⽂件的名字,⽂件状态及⽂件当前的位置等)。我们程序的数据需要输出到各种外部设备,也需要从外部设备获取数据,不同的外部设备的输⼊输出操作各不相同,为了⽅便程序员对各种设备进⾏⽅便的操作,我们抽象出了流的概念,我们可以把流想象成流淌着字符的河。在编写程序的时候,在打开⽂件的同时,都会返回⼀个FILE*的指针变量指向该⽂件,也相当于建⽴了指针和⽂件的关系。缓冲⽂件系统中,关键的概念是“⽂件类型指针”,简称“⽂件指针”。原创 2023-12-14 21:38:44 · 912 阅读 · 1 评论 -
单链表创建以及应用
创建链表。原创 2023-12-17 16:43:00 · 440 阅读 · 1 评论 -
双向带头循环链表的创建
综上可以只需要创建LTInsert和LTErase函数就可以快速创建一个链表。因为为循坏链表,所以需要从头结点的下一个结点开始,到头结点结束。结构体如下,其中储存两个指针,存前一个以及后一个结点的地址。双向带头循坏链表的结构。原创 2023-12-24 20:42:21 · 391 阅读 · 0 评论