![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言
c语言的 学习历程
大白菜和小白菜
这个作者很懒,什么都没留下…
展开
-
动态库和静态库
动态库:动态库又叫共享库动态库是一种可执行文件,文件后缀为.DLL或是.SO动态库存放在系统某个特定的位置,所有的进程都是可以共享或者引用这一份代码的内容。实际上,每个程序运行起来,在它的虚拟地址空间上栈的附近有一部分是分配给共享库的。动态库的特点:1.存放在系统特定位置,每个程序都可以引用,不论多少程序引用,内存中只会存在该动态库指令的一份拷贝,是代码共享的一种方式;2.在程序运行的时候才会去引用库中的相关函数,并不把这些函数的指令包含进去;3.你可以这样认为:动态库就像是一个“仓库转载 2021-03-22 08:48:38 · 1230 阅读 · 0 评论 -
c语言学习日记--3.20一周学习总结
标题原创 2021-03-20 17:22:45 · 317 阅读 · 0 评论 -
c语言学习日记-二级指针
二级指针变量存放的是一级指针的地址int a=10;int *p=&a;int **q=&p;printf("%d",**q);#include<stdio.h>int main(){ int a=10,b=20,tem; int *p1=&a,*p2=&b; int ** q1=&p1,** q2=&p2; tem=**q1; **q1=**q2; **q2=tem;原创 2021-03-20 17:17:42 · 294 阅读 · 0 评论 -
c语言学习日记--结构体类型未完成
一、结构体①概念结构体是一种构造类型(由多种类型拼多多而成) 结构体和数组一样,可以存放多个数据变量(称为成员),和数组不同的是它可以存放不同类型成员②结构体变量的使用(定义、赋值、初始化、打印、传参、返回值、这种类型的数组类型、这种类型的指针类型、等等)声明结构体对应的类型 根据声明好的结构体类型,定义对用的结构体变量 给结构体变量赋值 打印、传参、赋值……③结构体变量的类型声明关键字 struct:结构体标识符struct 类型名称{ char name[ 10]..原创 2021-03-20 17:02:53 · 187 阅读 · 0 评论 -
c语言学习日记--联合体
联合体也称共用体union定义共用体union [union tag]{ menber definition; menber definition; ..... menber definition; }[one or more union variables];union tay 是可选的,每个menber definition 是标准的定义变量,比如int、char、等在共用体定义的结尾,最后一个分号之前,可以指定一个或多个共用体变量,这.原创 2021-03-20 17:03:51 · 91 阅读 · 0 评论 -
c语言日记---变量的存储类
变量的存储类auto:自动变量,函数中所有的非静态局部变量,放在内存里,使用时分配内存auto int a;register':寄存器变量,一般经常被使用的变量可被设置为寄存器变量,register被存放在寄存器中,计算速度特别快。他是没有内存地址的,不能用指针对他操作。register int a;static :静态变量,设置变量的存储域,限制变量的作用域①对于普通变量的时候static int a 1.定义在函数里面: ...原创 2021-03-20 17:13:24 · 76 阅读 · 0 评论 -
c语言学习日记--二维数组
int a[2][3]';a:数组的名字,第一个元素(第一个一维数组)的地址&a:二维数组本身的地址*(&(a[0])):等于a[0];*a:第一个一维数组,第一个一维数组首元素的地址(*a)[1]:是第一个一维数组中的第二个元素*((*a)+1):是第一个一维数组中的第二个元素...原创 2021-03-20 17:15:28 · 74 阅读 · 0 评论 -
c语言学习日记----排序算法篇
1.快速排序排序原理快速排顺是对冒泡排序改进,首先这顶一个值,通过该值将 数组分为2个部分,小于基准数的放到左边,大于基准数的放到右边。之后左右两边的数据分别进行排序,而左右两边的排序依旧可以采用设定一个值两边排序,这是一个递归的思想。算法实现public static void quickSort(int[] arr) { quickSort(arr, 0, arr.length - 1);}public static void quickSort(int[] arr, i原创 2021-03-20 17:15:55 · 90 阅读 · 0 评论 -
c语言你学习日记-void指针2
指针一、概念:1.数据时放在变量 对应的内存的低智商2.数据类型与变量类型一直3.地址就是指针二、新的数据类型,指针类型指针变量是可以定义变量的,称为指针变量,指针变量是用来存放指针(地址)的指针变量的大小:逻辑性:变量的种类有多少可以 通过对应的数据的种类来区分。那指针也是一样指针变量的种类有多少,可以通过地址的种类来区分三、整形指针变量,用来存放整形变量的地址定义整形指针变量 int *p;//没有赋值只是定义,可能会出现野指针int mai..原创 2021-03-20 17:16:58 · 267 阅读 · 0 评论 -
c语言学习日记--结构体的综合应用,红蓝buff小程序
/* * @Author: your name * @Date: 2021-03-18 16:33:29 * @LastEditTime: 2021-03-19 09:28:02 * @LastEditors: your name * @Description: In User Settings Edit * @FilePath: \YueQianC_Daima.1\3.18\6.c */#include <stdio.h>#include <stdlib.h>.原创 2021-03-19 09:29:48 · 232 阅读 · 0 评论 -
c语言学习日记--枚举
枚举:enum 枚举名(枚举元素1、枚举元素2、枚举元素……)1.枚举的声明sum Day{Mon=1 ,TUE,WED,THU,FRI,SAT,SUN};注意:第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。我们在这个实例中把第一个枚举成员的值定义为 1,第二个就为 2,以此类推也可以在定义枚举类型的时候改变枚举元素的值sum Day{Mon=1 ,TUE=3,WED,THU,FRI,SAT,SUN};//其中WED为4,THU为..原创 2021-03-18 08:55:25 · 214 阅读 · 0 评论 -
c语言日记--宏定义函数
宏定义函数1.实质就是等价替换①#define M 10②#define AD(a,b) a+bint main(){int p=11,q=12;int sum=ADD(p,q);return 0;}③#definr SWAP(A,B) \ 注:要加换行{int temp=A; \A=B ; \B=temp; \}...原创 2021-03-20 16:54:17 · 167 阅读 · 0 评论 -
c语言学习日记-冒泡排序算法、选择算法、插入算法、希尔排序
冒泡排序、选择排序、插入算法1.冒泡排序冒泡排序的关键在于相邻元素两两比较,较大的元素置于一边 ,之后重复比较算法演示图代码实现 public static Sort(int[] a) { for (int i = 0; i < sizeof(a)/sizeof(int); i++) { for (int j = 0; j < sizeof(a)/sizeof(int) - 1 - i; j++) { if (a...原创 2021-03-17 08:31:47 · 102 阅读 · 1 评论 -
c语言学习日记-排序算法篇
排序算法①:非时间比较类排序交换排序 (冒泡排序、快速排序) 插入排序(插入排序、希尔排序) 选择排序(选择排序、堆排序) 归并 排序(二路归并排序、多路归并排序)②线性时间非比较类排序计数排序 桶排序 技术排序n:数据规模 k:桶的个数 In-place:不占用额外内存 Out-place:占用额外内存 稳定:如果 a 原本在 b 前面,并且 a=b,排序之后 a 仍然在 b 的前面 不稳定:如果 a 原本在 b 的前面,并且 a=b,排序之后 a 可能会出现在 .原创 2021-03-16 19:42:57 · 75 阅读 · 0 评论 -
C语言日记—二级指针
指针不仅仅可以指向普通的数据类型,例如:int、double、char等,也可以指向一份指针类型的数据,例如:int*、double*、char。如果一个指针指向另外一个指针我们就称他为二级指针(指向指针的指针),\假设有一个 int 类型的变量 a,p1是指向 a 的指针变量,p2 又是指向 p1 的指针变量,它们的关系如下图所示:int a=100;int *p1=&a;int **p2=&p1;指针变量也是一种变量,也会占用存储空间,也可以使用&am..原创 2021-03-15 08:47:38 · 75 阅读 · 0 评论 -
编译原理
编译原理1.c语言程序生成的过程宏观:.c文件-->编译-->ELF格式二进制可执行文件 gcc微观:预处理-->编译----汇编---链接预处理::包含头文件,宏替换,宏定义。 gcc -E xxx.c -o xxx.i编译:检查c语言的语法有没有错,如果没有错就会生成对应的.s文件(汇编文件) gcc -Sxxx.i -o xxx.s汇编: 检查汇编语法有没有错 gcc -c xxx.s -o xxx.o .o(目标文件 已经是一个...原创 2021-03-15 08:49:31 · 97 阅读 · 0 评论 -
c语言学习日记 --项目布局
一、项目模块化模块化:按照功能来分类,多文件多函数分类.c .h函数的分类:按照功能模拟智能家居:①功能分析:安防;摄像头、门禁、蜂鸣器、娱乐;音乐、视频、体感搭建一个项目模块化:①分功能:摄像头 音乐、游戏、电子相册②分文件 :摄像头监控: real_video.c 总接口:int real_video();音乐:music.c int music(...原创 2021-03-15 08:50:31 · 120 阅读 · 0 评论 -
C语言学习日记—函数进阶 内联函数
内联函数一、内联函数的由来在c语言中,一些函数被不断的调用,不断地出入栈,对栈空间在成了极大的浪费,因此引入内联函数来解决这个问题二、内联函数的作用当函数被调用时,直接将函数名替换为函数体,因此就不存在函数入栈和出栈的操作,从而提高了程序的执行效率,但是增加了代码量和空间使用,也就是空间换取时间三、内联函数的使用方法关内联函数键字inlinevoid myprintf(int a){ priintf("%d",a);}int main(){for(i=0;i<..转载 2021-03-13 13:53:32 · 107 阅读 · 0 评论 -
C语言学习日记—函数进阶 递归函数
一、递归函数概念:递归函数就是一个函数在他体内调用自身。(类似于俄罗斯套娃)每调用一次就进入新的一层。为防止无限调用,递归函数必须有结束条件。递归函数的两要素:递推关系、结束条件#include <stdio.h>int factorial(int n){ int result; if (n<0) //判断例外 { printf("输入错误!\n");...转载 2021-03-13 13:26:45 · 134 阅读 · 0 评论 -
c语言学习日记——指针
一、指针是什么c语言、变量存放在内存内,而内存实际上就是一组有序字节组成的数组,每个字节有唯一的内存地址。CPU通过内存寻址对储存在内存中的某个指定数据对象的地址进行定位。数据对象是指储存在内存中的一个指定书库类型的数值或字符串。他们都有一个自己的地址,而指针便是保存这个地址的变量。也就是说:指针是一种保存地址的变量。 前面已经提到内存其实就是一组有序字节组成的数组,数组中,每个字节大大小固定,都是 8bit。对这些连续的字节从 0 开始进行编号,每个字节都有唯一的一个编号,这个编号就是内存地址。示原创 2021-03-12 18:33:24 · 345 阅读 · 0 评论 -
c语言学习日记——函数篇
字符串操作的函数(都是基于库函数提供的)常用的字符串函数:计算字符串:strlen;字符串拷贝:strcpy;字符串比较:strcmp;字符串拼接:strcat;原创 2021-03-12 11:12:30 · 117 阅读 · 0 评论 -
c语言的学习日记--数组篇:
一、一维数组的实现1.一维数组的创建和初始化数组的创建:常见数组时必须定义数组的类型和大小int a[10]={1,2,3,4,5}; 括号内必须是常量,int a[ ]={1,2,3}; 这种也是可以的int a[ ]=“fahuif”;int a[ ]={‘a’,‘46’};数组的大小不能超过定义数组的大小char *p="abc"; //这里是把a的 地址放入p里...原创 2021-03-13 12:54:44 · 351 阅读 · 0 评论 -
C语言学习日记--常用的几种输入方式有些只能在window系统中使用
scanf() 是最灵活、最复杂、最常用的输入函数,上节我们已经进行了讲解,本节接着讲解剩下的函数,也就是字符输入函数和字符串输入函数。输入单个字符输入单个字符当然可以使用 scanf() 这个通用的输入函数,对应的格式控制符为%c,上节已经讲到了。本节我们重点讲解的是 getchar()、getche() 和 getch() 这三个专用的字符输入函数,它们具有某些 scanf() 没有的特性,是 scanf() 不能代替的。1) getchar()最容易理解的字符输入函数是 getchar转载 2021-03-05 11:16:02 · 322 阅读 · 0 评论 -
3.3C语言学习-Linux环境编译运行
Vim编译器常用快捷键视图Linux系统中常用的编译器有有两种 vi vim(新版本)1.首先创建一个.c文件vim .../.../.../../文件名.c输入“i”进入编译模式然后在里面编译你的源代码输入“Esc”退出编译模式“:wq”保存并退出2.运行生成的程序gcc 文件名 或gcc 文件名 -o 文件名(生成的二进制程序命)...原创 2021-03-05 14:53:00 · 71 阅读 · 0 评论 -
C学习日记--控制流语句
汉语中我们常常通过:如果……否则……的逻辑进行选择1.分支控制流:①if(表达式){语句}; 不加{}只会执行下面第一行语句②if(表达式){语句}else{语句};③if(){ }else if(){ }else if(){ }else{}2.选择控制流 :switch{ case 常量1:语句1;break;...原创 2021-03-05 14:54:24 · 100 阅读 · 0 评论 -
c语言学习日记--运算符
1.算术运算符+ - * / %优先级顺序 * / % 》 + - A%B AB必须都为整型2.位运算符 ①》《 右移或左移 (对bit操作)② && 与(有假泽假)③ || 或 (有真则真)④^ 异或(01为1)⑤~ 取反(0101取反为 1010)3.判定运算符 < &g...原创 2021-03-05 14:54:00 · 101 阅读 · 0 评论 -
C语言的学习日常-基本数据类型
C语言的基本数据类型①int 整型 占用2或4字节 ②long 长整型 占用4字节 -32768 --- 32768③short 短整型 占用2字节 -2的31次方 ---- 2的31次方④char 字符型 占用1字节 -128 ---128⑤float 单精度型 占用4字节 -10的38次方-----10的38次方⑥double 双精度型 占用 8字节 -10的308次方-----10的308次方下面三...原创 2021-03-05 14:53:40 · 87 阅读 · 0 评论 -
c语言学习日记--大端和小端
大端模式(Big-Dndian)和小端模式(Little-Indian)大端模式和小端模式是计算机采用字节存储机制的两种方式(两种字节类)首先我们要知道字节序是什么?字节的顺序就是字节序。①Big-Endian 是指高位字节排放在内存的低地址端,低位字节排放在内存的高地址端.②Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。注:TCP/ip协议中将字节序定义为大端模式1.1用图表的形式理解高低地址端-------------------原创 2021-03-03 19:45:35 · 220 阅读 · 1 评论