
C
文章平均质量分 79
C
跟 屁 虫
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
写文件不同缓存方法在进程中的表现以及效率(Linux)
文章目录前言前言1.三种缓存方式的比较1.无缓存2.行缓存3.快缓存原创 2021-03-31 17:36:29 · 145 阅读 · 0 评论 -
C边角料5——十进制-十六进制-二进制之间的转换
原创 2021-03-12 11:19:05 · 86 阅读 · 0 评论 -
C边角料6——C与汇编之间的参数传递
主程序在调用子程序时,往往要向子程序传递一些参数;同样,子程序运行后也经常要把一些结果参数传回给主程序。主程序与子程序之间的这种信息传递称为参数传递。参数传递有四种方法:寄存器参数传递,约定存储单元参数传递,利用CALL后续区进行参数传递,利用堆栈进行参数传递。一、寄存器参数传递优点是实现简单方便,调用方便,但是寄存器个数有限,且寄存器往往还要存放其他数据,所以只适合用于要传递的参数较少的情况。程序示例,这里就不举例了,利用到这种参数传递的例子有很多。例如,利用ax传入一个16位数,转化为字符串并转载 2021-03-07 19:28:14 · 1131 阅读 · 0 评论 -
C边角料2——大小端模式
大小端模式1、什么是大小端模式(1)计算机通信发展起来后,遇到一个问题就是:在串口等串行通信中,一次只能发送1个字节。这时候我要发送一个int类型的数就遇到一个问题。int类型有4个字节,我是按照:byte0 byte1 byte2 byte3这样的顺序发送,还是按照byte3 byte2 byte1 byte0这样的顺序发送。规则就是发送方和接收方必须按照同样的字节顺序来通信,否则就会出现错误。这就叫通信系统中的大小端模式。这是大小端这个词和计算机挂钩的最早问题。(2)现在我们讲的这个大小端模式,更原创 2021-02-12 17:07:21 · 255 阅读 · 0 评论 -
C边角料1——offsetof宏与container_of宏
offsetof宏与container_of宏//TYPE是结构体类型,MEMBER是结构体的一个元素名#define offsetof(TYPE,MEMBER) ((int)&(TYPE *)0)->MEMBER)其实偏移量就是(int)&(s1.b)-(int)&s1。9.1、由结构体指针进而访问各元素的原理(1)通过结构体整体变量来访问其中各个元素,本质上是通过指针方式来访问的,形式上是通过.的方式来访问的(这时候其实是编译器帮我们自动计算了偏移量)。9.2、原创 2021-02-12 16:48:18 · 118 阅读 · 0 评论 -
C基础之函数指针、二重指针
函数指针、二重指针1.指针数组与数组指针1.1、字面意思来理解指针数组与数组指针(1)指针数组的实质是一个数组,这个数组中存储的内容全部是指针变量。(2)数组指针的实质是一个指针,这个指针指向的是一个数组。1.2、分析指针数组与数组指针的表达式(1)int *p[5]; int (*p)[5]; int (p[5]);(2)我们在定义一个符号时,关键在于:首先要搞清楚你定义的符号是谁(第一步:找核心);其次再来看谁跟核心最近、谁跟核心结合(第二步:找结合);以后继续向外扩展。(3)如果核心和原创 2021-02-12 15:09:02 · 403 阅读 · 0 评论 -
C指针
C基础之指针1.指针到底是什么?1.1、指针变量和普通变量的区别(1)首先必须非常明确:指针的实质就是个变量,它跟普通变量没有任何本质区别。指针完整的名字应该叫指针变量,简称为指针。1.2、为什么需要指针?(1)指针的出现是为了实现间接访问。在汇编中都有间接访问,其实就是CPU的寻址方式中的间接寻址。(2)间接访问(CPU的间接寻址)是CPU设计时决定的,这个决定了汇编语言必须能够实现间接寻址,又决定了汇编之上的C语言也必须实现间接寻址。(3)高级语言如Java、C#等没有指针,那他们怎么实现原创 2021-02-12 14:47:25 · 397 阅读 · 1 评论 -
C基础之位操作
位操作1.位操作符1.1、位与&(1)注意:位与符号是一个&,两个&&是逻辑与。(2)真值表:1&0=0 1&1=1 0&0=0 0&1=0 (3)从真值表可以看出:位与操作的特点是,只有1和1位于结果为1,其余全是0.(4)位与和逻辑与的区别:位与时两个操作数是按照二进制位彼次对应位相与的,逻辑与是两个操作数作为整体来相与的。(举例:0xAA&0xF0=0xA0, 0xAA && 0xF0=1)****1原创 2021-02-12 10:47:01 · 436 阅读 · 1 评论 -
C语言关于内存
C语言关于内存1.程序运行为什么需要内存1.1、计算机程序运行的目的计算机为什么需要编程?编程已经编了很多年,已经写了很多程序,为什么还需要另外写程序?计算机有这个新的程序到底为了什么?程序的目的是为了去运行,程序运行是为了得到一定的结果。计算机就是用来计算的,所有的计算机程序其实都是在做计算。计算就是在计算数据。所以计算机程序中很重要的部分就是数据。计算机程序 = 代码 + 数据 计算机程序运行完得到一个结果,就是说代码 + 数据 (经过运行后) = 结果从宏观上来理解,代码就是动作,就是原创 2021-02-12 10:39:55 · 753 阅读 · 1 评论 -
C/C++ 中头文件相互包含引发的问题
原文来自https://blog.csdn.net/hazir/article/details/38600419转载 2020-06-20 09:24:19 · 144 阅读 · 0 评论 -
C/C++不同文件夹下包含头文件的方法及#include的使用
C/C++不同文件夹下包含头文件的方法及#include的使用文章来自https://blog.csdn.net/szlcw1/article/details/23023991本文主要介绍了如何不同文件夹下使用预处理器指示符#include。假设我们有如下一个工程,其中包含了几个源代码文件和头文件。其中main.c是主源代码文件,里面包含main函数。在base中包含:func3.h,func3.c,文件夹main和文件夹func4在main中包含:main.c,func1.h,func1.c和转载 2020-06-20 09:16:56 · 2693 阅读 · 2 评论 -
C语言变参问题
C语言变参问题好文转载自http://blog.csdn.net/aking1314/article/details/5874195C++中有函数重载这种方法,以供我们调用时要可以不确定实参的个数,其实 C 语言也可以,而且更高明!我们在stdio.h 中可以看到 printf() 函数的原型:int printf(char * format,…)事实上,我们如果要写这样的函数也可以类似的写,那么在定义函数时用上这个符号“ … ” ,它叫占位符,喊它 “ 三个点 ” 也可以,只要你愿意!那么我可以转载 2021-02-12 22:02:06 · 176 阅读 · 0 评论 -
C基础之存储类、作用域、生命周期、链接属性
存储类、作用域、生命周期、链接属性1.概念解析1.1、存储类(1)存储类就是存储类型,也就是描述C语言变量在何种地方存储。(2)内存有多种管理方法:栈、堆、数据段、bss段、.text段······一个变量的存储类属性就是描述这个变量存储在何种内存段中。(3)譬如:局部变量分配在栈上,所以它的存储类就是栈;显式初始化为非0的全局变量分配在数据段,显式初始化为0和没有显示初始化(默认为0)的全局变量分配在bss段。1.2、作用域(1)作用域是描述这个变量起作用的代码范围。(2)基本来说,C语言原创 2021-02-12 21:54:56 · 243 阅读 · 0 评论 -
静态库,动态库 (c基础)
静态库,动态库1.自己制作静态链接库并使用发布版本包含.a文件和.h头文件。.c文件不会给别人我们选择写一个makefile,这样可以将编译的过程记录下来。all:gcc aston.c -o aston.o -car -rc libaston.a aston.o(1)第一步:自己制作静态链接库首先使用gcc -c只编译不连接,生成.o文件;然后使用ar工具进行打包成.a归档文件库名不能随便乱起,一般是lib+库名称,后缀名是.a表示是一个归档文件注意:制作出来了静态库之后,发布时需要原创 2021-02-13 09:51:39 · 311 阅读 · 0 评论 -
C边角料3——C基础之预处理
宏定义与预处理、函数和函数库1.C语言预处理理论1.1、由源码到可执行程序的过程(1)源码.c->(编译)->elf可执行程序(2)源码.c->(编译)->目标文件.o->(链接)->elf可执行程序(3)源码.c->(编译)->汇编文件.S->(汇编)->目标文件.o->(链接)->elf可执行程序(4)源码.c->(预处理)->预处理过的.i源文件->(编译)->汇编文件.S->(汇编)-&原创 2021-02-12 21:31:42 · 130 阅读 · 0 评论 -
C基础之基础数据结构
数组、字符串、结构体、共用体、枚举5.C语言的字符串类型5.1、C语言没有原生字符串类型(1)很多高级语言像java、C#等就有字符串类型,有个String来表示字符串,用法和int这些很像,可以String s1 = “linux”;来定义字符串类型的变量。(2)C语言没有String类型,C语言中的字符串是通过字符指针来间接实现的。5.2、C语言使用指针来管理字符串(1)C语言中定义字符串方法:char *p = “linux”;此时p就叫做字符串,但是实际上p只是一个字符指针(本质上就是一原创 2021-02-12 17:08:18 · 385 阅读 · 3 评论