C语言
文章平均质量分 59
能别闹
不积硅步何以至千里
展开
-
程序员的自我修养--看书总结(更新ing)
对从事linux平台相关开发的程序员,或者是底层编译链接感兴趣的人,《程序员的自我修养》是很值得看的一本中文书。正如书的副标题,“链接、装载与库”是主要的内容。挑了书中感兴趣的部分——linux平台相关内容,前段时间看完了却一直没有复习和总结,现在把书捡起来重新看一遍,做做思维导图,总结下吧。好记性不如烂笔头,时时总结回顾,温故知新。思维导图工具: BlinkMind开源工具github地址: https://github.com/awehook/blink-mind-desktop按照章节进行总结原创 2021-07-14 19:19:03 · 202 阅读 · 0 评论 -
gcc -D选项 宏定义
用法-Dname 定义宏name,默认定义内容为字符串“1”-Dname=defn 定义宏name,并且内容为defnC语言中使用#define来定义宏,gcc也可以定义宏给源代码使用。不过gcc -D选项就简陋很多,和#define的简单用法是一致的。但是其本质是宏的替换。应该是在预处理阶段直接替换字符。双引号或者单引号并不影响值的设定。还有,这个东西是宏,和C语言中的字符串是两个东西。模块隔离这个东西用得挺多的。参考:https://www.cnblogs.com/amanliket原创 2021-02-09 14:31:47 · 1187 阅读 · 1 评论 -
数组和链表
数组和链表是最常用的两个数据结构了。存储数据各有各的特点数组1.存储空间连续。2.查找效率高。可以直接找到给定地址数据3.数组需要预留空间,可能造成内存的浪费4.插入和删除数据效率较低5.数组在运行阶段空间固定,不利于扩展。链表1.动态申请,内存在堆中,不连续。2.节点通过指针连接接。3.大小不固定,易于扩展,内存资源利用率高4.插入和删除数据方便5.查找数据需要从头遍历,效率较低参考:https://blog.csdn.net/weixin_51600120/article/d原创 2021-02-08 22:18:12 · 99 阅读 · 0 评论 -
野指针和悬空指针
概念野指针:不确定其具体指向的指针。“野指针”最常来自于未初始化的指针。悬空指针:最初指向的内存已经被释放了的一种指针。危害指针指向的内存不可控,访问和修改指向的内容会带来不可控影响。处理措施1.指针初始化为null2.申请的内存释放后,指针变量没有立即释放的,要置为null参考:https://www.cnblogs.com/Hijack-you/p/11913618.htmlhttps://www.cnblogs.com/idorax/p/6475941.html...原创 2021-02-08 21:33:34 · 144 阅读 · 0 评论 -
c语言宏和预处理(条件编译等)总结_先占坑后补上
宏也是C语言中的一个点,要总结下。原创 2021-02-08 20:55:54 · 117 阅读 · 0 评论 -
C语言关键字_record
重要关键字涉及流程和单数据类型的关键字,功能一般都比较简单,在使用过程中很快就会熟悉。下列关键字相对前者来说,功能较多,值得好好学习。externstaticconst次重要关键字typedefsizeofstructunionenumregistervolatile关键字汇总这个链接罗列得非常清楚,大赞~ 借鉴一下https://zhuanlan.zhihu.com/p/77474834C语言关键字auto:声明自动变量;break:跳出当前循环;case:原创 2021-02-08 17:47:08 · 2834 阅读 · 0 评论 -
c语言程序的编译过程
操作系统:ubantu工具gcc文件:test.cabner@DESKTOP-M6D2HEN:~/mytest$ cat test.c#include<stdio.h>#define MAXC 3#define MAXB MAXC + 1#define MAXA MAXB + 2int main(){ int a = MAXA; return 0;}主要为四个阶段预处理->编译->汇编->连接C语言编译过程分成原创 2021-02-02 02:13:11 · 8036 阅读 · 1 评论 -
C语言内存管理和垃圾回收策略~
C语言内存管理和垃圾回收策略C语言程序的内存划分垃圾回收策略C语言程序的内存划分一个可执行的C语言程序,在执行的时候,其内存主要分为四个部分。链接:五个部分代码段:存放程序代码的二进制静态区:存放静态变量和静态变量栈:存放局部变量堆:存放动态申请的资源也有说五个段的,都差不多。只不过细分了。链接:五个部分代码段:存放执行代码数据段:存放已初始化的全局变量和静态变量。BBS段:存放为初始化的全局变量和静态变量。栈:存放程序临时创建的局部变量堆:存放进程运行中被动态分配的内存段垃原创 2020-11-18 15:39:00 · 985 阅读 · 0 评论 -
安全函数_概念
c标准库的一些函数在使用过程中,面临数组内存越界等安全问题,这些原生的有隐患函数称为不安全函数。为了避免不安全函数的隐患给代码带来各种漏洞,各大厂商基于标准库的函数,进行包装,加上校验和规避的措施,推出安全函数版本。其中比较有名的有windows的安全函数,华为的安全函数。下面就windows的安全函数说一说。vs安全函数在使用vs(Visual Studio) 进行程序开发的使用,如果使用了strcpy等函数,vs会产生告警,提示用_s后缀的函数进行替换。_s后缀的这类函数就是安全函数。各大厂商原创 2021-01-13 16:25:10 · 2516 阅读 · 0 评论 -
可变长数组&&柔性数组结构体成员&&可变长结构体
可变长数组可变长数组是C99相较C89新增的一个特性。{ int n = 10; int str[n];}1.可变长数组无链接性,即只在代码块内作用(函数体内或者局部代码块内)。2.可变长数组不可初始化。3.数组长度在生存周期不可更改。即n的值不影响str的长度。4.可变长数组作为函数形参的时候,[]中使用*,其本质是指针。形参中的数组还可以使用类型限定词const、volatile、restrict和static关键字。参考文章:https://blog.csdn.net/nash6原创 2021-02-02 01:09:30 · 720 阅读 · 0 评论 -
glibc源码-标准库的一些函数
glibc版本:2.32IDE:vscode个人认为比较常用的,可以看看源码的函数,总结下:stdio.h路径:\glibc\libio\stdio.h函数原型功能输入int fprintf (FILE *__restrict __stream, const char *__restrict __format, ...);格式化输出到文件int printf (const char *__restrict __format, ...);格式化输出到标准输出原创 2021-01-08 23:15:28 · 975 阅读 · 0 评论 -
glibc源码-printf
glibc版本:2.32printf1.va_list 数据类型,其实就是void *2.可变参函数的实现三个宏va_start:将arg指向formatva_arg:将arg指向数据类型特定数据类型的参数va_end:将arg置零。不过有看到一个版本展开是只是void 0这四个符号在glibc源码(2.32)的头文件中没有看到具体的定义(展开是什么样)。用了其他的方式调用了gcc或者是linux的头文件,我更倾向于后者。不知道是脚本,python还是其他的手段对stdarg.h-da原创 2021-01-07 00:07:23 · 1936 阅读 · 1 评论 -
glibc源码-libc_hidden_def
glibc版本:2.32在阅读scanf源码的时候,看到ldbl_hidden_def,不明这个宏的意思,于是查阅资料,进行了一番了解。(因为涉及的知识点太过庞大,包含链接,库的加载,函数的调用等等,且当前不从事与这方面的研究,故仅了解下)scanf调用:scanf->vfscanf->__vfscanf_internal.__vfscanf_internal的实现代码有2700行。。。。恐怖。浏览了一遍,没完全读懂,和vfprintf差不多,找到格式化字符,然后调用系统接口读入信原创 2021-01-07 20:14:05 · 2128 阅读 · 1 评论 -
malloc和free
IDE:codeblocks 简单代码编译还是习惯用这个头文件:stdlib.h1.malloc和free一般成对出现。申请了内存不使用时候需要释放掉。2.free空指针不会有任何操作。https://segmentfault.com/q/1010000003697040例子:#include<stdio.h>#include<stdlib.h>int ...原创 2020-03-19 12:05:46 · 2084 阅读 · 0 评论 -
const函数形参char *
语言环境:C语言IDE:codeblocks编译器:MinGWconst关键字的这里不做赘余叙述。下面探讨下const修饰char *的函数形参时的三种情况。第一种 const修饰的字符串指针 赋值给 临时变量字符串指针#include<stdio.h>void testfunc(const char *teststr){ char *temp; te...原创 2020-03-18 11:56:14 · 2514 阅读 · 1 评论