![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
文章平均质量分 73
Don't_Touch_Me
努力可以改变一切!
展开
-
初步分析汇编代码
该篇文章为《中科大老师全程讲解Linux内核分析》对于汇编代码的解读过程1. C 语言程序main.cint g(int x){ return x + 3;}int f(int x){ return g(x);}int main(void){ return f(8) + 1;}2. 汇编程序main.s(通过gcc -S -o main.s main.c -m32得来,并去掉以 .开头的辅助链接信息) 1 g:.原创 2021-08-07 18:13:02 · 2442 阅读 · 3 评论 -
CMake 介绍
CMake 介绍CMake:你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件让人抓狂的工作。CMake 就是针对上面问题所设计的工具:它首原创 2021-05-22 15:29:18 · 185 阅读 · 0 评论 -
C语言静态链接库和动态链接库讲解及制作使用
C语言静态链接库和动态链接库讲解及制作使用1. 引言静态链接库和动态库均为函数库函数库:不是C语言的一部分,是一些事先写好的函数的集合,给别人复用就像scanf和printf函数一样,通过#include <stdio.h>,即可调用早期并没有函数库,只是后来的程序员们通过整理把日常用的函数进行合并,形成一份完整的函数库,就是现在的标准函数库,例如:glibc静态链接库:函数库源代码经过只编译不链接形成的.o目标文件,然后通过ar工具将.o文件归档成.a静态链接库文件商业公原创 2021-02-06 23:10:48 · 2781 阅读 · 1 评论 -
C语言的编译链接流程
C语言的编译链接流程1. 编译链接流程图2. 引言#include <stdio.h>#define OUTPUT_STR "hello world"int main(){ printf("%s\n", OUTPUT_STR); return 0;}对于上面这个代码,大家可能再熟悉不过了,现在我们来从头分析它,如何从源码变为可执行程序3. 预编译预编译的命令:gcc -E *.c -o *.i其中 *.c 表示C语言编写的源代码,原创 2021-02-06 18:04:18 · 971 阅读 · 0 评论 -
C语言的编译到执行的过程
C语言的编译过程预处理【gcc -E】编译汇编链接原创 2020-12-12 02:51:10 · 288 阅读 · 0 评论 -
归并排序 C语言实现
1. 归并排序(排序的方法一种,速度比选择排序、插入排序等快很多)适合较多数据排序2. 归并排序思想(拆分、合并)2.1 拆分2.2 合并2.2 合并详解3. c语言代码实现#include<stdio.h>#define ArrLen 20void printList(int arr[], int len) { int i; for...原创 2019-04-20 13:05:45 · 44647 阅读 · 42 评论 -
斐波那契 C语言递归实现
1. 斐波那契(特点:所要求的项是前两项之和,f(n)=f(n-1)+f(n-2))1 1 2 3 5 8 132. c 语言代码实现#include<stdio.h>int fibonaccia(int n) { if (n == 1 || n == 2) return 1; return fibonaccia(n - 1) + fibonaccia(n - ...原创 2019-04-20 13:11:25 · 2107 阅读 · 0 评论 -
快速排序 C 语言实现
#include<stdio.h>void quickSort(char *arr, int left, int right);int main(){ int arr[5] = {5, 6, 1, 3, 2}; quickSort(arr, 0, 4); int i = 0; while (i < 5) { printf("%d\t", arr[i]); ...原创 2019-05-30 14:05:37 · 1393 阅读 · 2 评论 -
二叉树(创建、先中后遍历) C 语言
二叉树的创建以及遍历均需要通过递归方式进行节点包括:节点数据,两个分叉(一个为左子树、一个为右子树)下面的代码输入将创建如下图所示二叉树原创 2019-06-07 20:24:33 · 297 阅读 · 0 评论 -
线性表顺序表示
上一篇定义了线性表的抽象数据类型以及它所具有的操作,这一篇给出顺序表示的实现代码,主要是C语言实现的#include<stdio.h>#include<stdlib.h>#include<malloc.h>#define ListLength 100typedef struct { int content;}DataType;typedef ...原创 2018-11-30 17:20:50 · 104 阅读 · 0 评论 -
线性表
概念:零个或多个元素的有穷序列特点:除第一个元素只有一个后继与最后一个元素只有一个前驱,其它的每个元素有且仅有一个前驱一个后继表示方式:顺序表、链表线性表的抽象数据类型:ADT(Abstract Data Type) List isoperations //创建并返回一个空线性表 List createList(void) //在list中末尾插入元素...原创 2018-11-30 13:27:16 · 104 阅读 · 0 评论 -
C语言之众数
#include<stdio.h>int main(){ int numbers[10] = {1,2,3,1,2,3,4,5,6,1}; int counts[10] = { 0 }; int count = 0; int i, j; for (i = 0; i < 10; i++)//记录每个数字的出现的个数 { for (j = 0; j <...原创 2018-10-07 13:05:04 · 6611 阅读 · 0 评论 -
C语言入门第三天之变量常量
变量:字面意思是能变化的量常量:字面意思是不能变化的量C语言变量定义:int number = 12;//整型数据定义number = 13;//✔可以改变float f = 1.2;//浮点型数据定义f = 1.3;//✔可以改变char ch = 'a';//字符型数据定义ch = 'b';//✔可以改变C语言常量定义:const int number = 1...原创 2018-08-27 00:08:17 · 141 阅读 · 0 评论 -
C语言入门第三天之运算符
运算符:顾名思义,参与运算的符号1.算术运算符:+ - * / % ++ --#include<stdio.h>int main(){ /**************算术运算符***************/ int x = 12;//初始化一个整型变量x int y;//定义一个变量y y = x + 2; printf("y = x + 2 运算后y的值...原创 2018-08-27 12:30:55 · 291 阅读 · 0 评论 -
C语言入门第六天之数组排序(一)
当需要定义很多同样类型的变量时,一个个用变量去存储,那样很不现实,那么就出现数组,数组可以定义一系列的相同类型的数据变量,通过下标去索引操作这些数据变量int a[10] = {0,1,2,3,4,5,6,7,8,9}一维数组就是像上面的结构,今天只讲一维数组,明天深入当执行 a[0] = 3这句话的时候 内存数组中的数据就变成了下面所示:内部储存的数据就变成了这个样子,可...原创 2018-08-30 23:55:54 · 214 阅读 · 0 评论 -
C语言入门第一天
1.引入头文件#include<stdio.h>include 包含 stdio.h standard input output head 标准输入输出头文件这句话的意思是将stdio.h头文件引入到本.c文件中,供输入输出使用stdio.h头文件中包含了输入输出函数,可供调用,下图是stdio.h的内容2.基本C语言程序入口int main(){ re...原创 2018-08-23 19:26:26 · 254 阅读 · 0 评论 -
C语言入门第四天之循环操作
循环操作,在编程中十分重要,计算机做的最多的事情就是重复的执行某几条指令,拿我们程序员来说一个程序没有循环就没了灵魂(递归除外),写一条执行一条的话,大部分人都累死了,哈哈,所以学好循环极为重要!本次以一个案例驱动,求1+2+3+...+100=?1.for循环实现#include<stdio.h>int main(){ int result = 0;//存放结果的...原创 2018-08-28 13:59:44 · 280 阅读 · 0 评论 -
C语言入门第五天之判断
程序没有判断,那么它是十分呆板的,一条条指令执行,但是正因为有了判断,程序才真正意义上"活"了起来,所以判断在程序中是极为重要的1.ifif(表达式){执行体}如果表达式成立或者满足条件,则执行执行体内容2.if elseif(表达式){执行体1}else {执行体2}根据表达式的真假,分别选择不同的执行体进行执行,当表达式满足if的条件,则选择执行执行体1的内容,相反...原创 2018-08-29 13:19:58 · 131 阅读 · 0 评论 -
C语言入门第二天
#include<stdio.h>int main(){ int x, y,z; int max(int x, int y); printf("Please input two numbers:"); scanf("%d %d",&x,&y); z = max(x, y); printf("The maximum number of two numbe...原创 2018-08-25 13:15:33 · 542 阅读 · 0 评论 -
数据结构之链表
#include<stdio.h>#include<stdlib.h>#include<malloc.h>//定义一个链表节点类型typedef struct node{ int data;//存储数据 struct node *next;//指向下一个节点的指针}LinkNode;//创建链表,将头地址返回LinkNode * create...原创 2018-09-25 23:46:18 · 135 阅读 · 0 评论 -
C语言入门第三天之数据类型
谈到C语言的数据类型,我认为是可以分为两类,一类是基本数据类型,另一类是引用数据类型(这个我不知道我这么说到底对不对,不过我就是这么理解的) 这是一个仓库,里面有各种各样的物品,我们身份是一名快递员,要去给这些物品进行包装处理分类,这时候我们会怎么做呢? 答:我们会先将他们进行分类,菱形的放在一堆(因为他们属于菱形类型),矩形...原创 2018-08-26 23:32:42 · 148 阅读 · 0 评论