- 博客(70)
- 收藏
- 关注
原创 virtualBox安装ubuntu,常用知识点
有时候经常需要编写一个小的c语言验证程序,这个时候在linux下面编译运行比其他编译器方便的多,因此需要安装linux虚拟机。这里介绍下virtualBox安装ubuntu,几个非常有用的知识点。virtualbox 设置里面有“共享文件夹”这一项,关闭虚拟机设置下重启虚拟机即可。这是因为区域和语言不一致导致,比如区域中国,语言英语;su - leo //切回其他账户。3.vi编辑,输入箭头显示字母ABGD。修改/etc/vimrc,最后一行添加。2.ctrl+alt+t 打不开终端。
2025-06-13 15:25:37
210
原创 堆栈(栈)的实现
链表栈#include <stdio.h>#include <stdlib.h>typedef int data_t;typedef struct linkstack{ data_t data; struct linkstack *next;}linkstack_t;linkstack_t *creat_linkstack(){ linkstack_t *head; head = malloc(sizeof(linkstack_t)); head->
2022-02-14 06:50:08
369
原创 队列queue的实现
顺序表实现##list.c#include <stdio.h>#include <stdlib.h>typedef int data_t;typedef struct list{ data_t *data; //保存数据的空间 int size; //容器能保存的元素个数 int last; //保存最后一个有效元素的下标}list_t;/*返回创建好的 空顺序表 的地址*/list_t *creat_list(int size){ list_t *
2022-02-14 06:47:33
327
原创 顺序表实现案例
范例1## list.c#include <stdio.h>#include <stdlib.h>typedef int data_t;typedef struct list{ int size; //容器能保存的元素个数 int last; //保存最后一个有效元素的下标 data_t data[0]; //不定长数组名 必须放于 结构体的最后一个成员}list_t;/*返回创建好的 空顺序表 的地址*/list_t *creat_list(int
2022-02-14 06:36:05
503
原创 冒泡,快排和树
冒泡#include <stdio.h>#include <stdlib.h>int data[] = {3,8,2,9,1,5,7,6,4}; //3,2,8,1,5,7,6,4,9int maopao(int data[],int size){ int i,j; int temp; for(j = 0;j < size - 1;j ++){ for(i = 0;i < size - 1 - j;i ++){ if(data[i]
2022-02-14 06:21:20
103
原创 单向链表及双向链表
链表#include <stdio.h>#include <stdlib.h>typedef int data_t;typedef struct linknode{ data_t data; struct linknode *next;}link_t;link_t *creat_link(){ link_t *head; head = malloc(sizeof(link_t)); head->next = NULL; return head;
2022-02-14 06:11:44
474
原创 linux网络编程
网络基本知识:TCP协议分成了两个不同的协议TCP:用来检测网络传输中差错的TCP:面向连接的数据流传输服务 可靠 适合网络状况不是很好的场合UDP:面向无连接的传输协议 不可靠,但是实时性更好,适合网络状况佳的场合socket套接字:socket是一种特殊的IO接口,也是一种文件描述符。不仅能实现本地不同进程之间的通信,而且通过网络能够在不同主机进程之间进行通信分类:流式套接字SOCK_STREAM 应用TCP通信数据报套接字SOCK_DGRAM 应用U
2022-02-11 00:27:12
1316
原创 linux shell
1、shell是一个命令行解释器,能够使用户和操作系统进行交互。命令格式(通常包括三部分,选项和参数是可选项):命令 选项 参数连续按下两次TAB键用于命令补齐,按下一次TAB键用于文件名补齐。2、shell通配符和特殊字符'*‘表示匹配任意长度的字符串,’?'表示匹配一个长度的字符管道(|):将第一个命令的输出作为第二个命令的输入,,使用管道可以将一些命令联合起来使用,得到单个命令无法实现的效果。 eg:ls /usr/bin |wc -W输入/输出重定向:改变shell命令的输入输出
2022-02-11 00:25:50
775
原创 C语言(二)
1、sizeof(fun)=1sizeof(&fun)=4 fun为函数名解释:函数名其实是一个符号表,占用一个字节,虽然函数名可以当做函数的入口地址,当做一个指针,但是并不能像指针那样占用4个字节,当取地址的时候,确定是4个字节2、存储类型auto:默认情况下,所有的变量都是autoregister:表示变量是存放在CPU寄存器中,而不是存放在内存里面,因此不能用&符号取内存地址extern:声明变量或者函数是来自外部的文件static:修饰局部变量:作用域为定义该局
2022-02-11 00:25:09
900
原创 IO与静态库动态库
一、文件IO1、什么是系统调用(文件IO)(1)用户空间进程访问内核的接口,使用内核提供 的各种功能(2)极大提高了系统的安全性和用户程序的可移植性(因为操作系统大多是多任务的,直接访问硬件会出问题)2、什么是库函数(标准IO)(1)库函数是为了实现某个功能而封装起来的API集合(用户编程接口)(2)提供统一的编程接口,更加便于应用程序的移植系统调用和库函数的区别************系统调用发生在内核空间,如果用户空间的一般应用程序使用系统调用来进行文件操作,会有用户空间切换到内核空间的
2022-02-11 00:24:10
415
原创 进程与线程
一、进程、线程特点及其关系1、多任务处理多任务处理指用户可以在同一时间内运行多个应用程序,每个应用程序称为一个任务。事实上,单核处理器同一时刻只能执行一个任务,每个任务创建时被分配时间片(几十到上百毫秒),操作系统会在当前任务的时间片用完时,调度其他任务,由于任务会频繁第切换执行,因此给用户多个任务同时运行的错觉。2、进程(1)基本概念程序是一段静态的代码,而进程是程序的一次动态执行过程,它是操作系统进行资源分配和调度的最小单元。一次任务的执行可以激发多个进程。(2)主要特性a、并发性系统中
2022-02-11 00:22:39
204
原创 C语言(一)
一、C语言背景简介1、GCC编译流程预处理 :-E -->.i文件 预处理只是做头文件的展开,宏替换,条件编译选项的判断,注释删除等工作,不会报任何错误编译:-S -->.s文件 检查代码是否有语法错误,无误后翻译成汇编语言汇编:-c -->.o文件 将汇编文件翻译成二进制机器代码链接:链接函数库,生成可执行文件这里有个点就是在预处理阶段.H文件只是包含了大量的函数声明,而没有函数的实现,这些函数的实现都被封装进函数库里
2022-02-11 00:19:41
985
原创 设计模式及编程技巧
前言为了提高自己的编程水平,优化自己的代码设计,粗略翻了《Head+First设计模式》这本经典之作(以后有时间再细读)。可惜的是设计模式一般是面向对象编程时用到的技巧,但是我现在主要是C编程,只能借鉴其思想了,毕竟万物皆对象,C也不例外。1.软件设计致力于提高“可复用”,“可维护”,“可扩展”2.变化的部分和不变的部分要抽离分开(封装变化的部分)3.针对接口编程,而不是实现编程核心是:...
2019-09-26 20:21:44
226
原创 回忆:一家芯片公司的面试经历
七月初的时候面试了本地的一家芯片公司,虽然没进去但是收获良多,整体感受芯片行业面试,无论是笔试题还是面试题问的都比较偏底层。面试里面C语言试题有几道题是关于内存操作的,当时答得不太好,这里回忆一下,写一个测试代码,验证下strcpy(p,str)代码一:不给p动态申请内存解析:p是一个指针,当不给它申请内存时,使用strcpy给它赋值,运行结果是段错误。代码二:给p申请内存空间解...
2019-08-22 19:02:50
2315
原创 字符串的解析与拼接(C语言实现)
简介最近大半年在搞一个基于NB的物联网项目,里面涉及到NB模组到移动ONENET平台的接入,整个过程需要不断发送AT指令到NB,从返回信息里解析相关参数再放入到下一条指令里面,这里以onenet平台下发数据介绍下字符串的处理方法如图,当平台下发数据123时,mcu收到字符串+MIPLWRITE: 0,18960,3200,0,5750,2,3,313233,0,0,按照接入协议,我需要在10...
2019-08-22 17:12:14
1488
原创 GIT使用简易流程
前言之前写过一个文章记录了GIT的常用命令,结果重新去看文档学习GIT使用的时候发现一俩懵逼,所以这次重新梳理一下。GIT是目前应用最广泛的分布式版本管理系统,可以脱网单机使用,而GITHUB则可以认为是网上开源代码托管平台,可以与GIT无缝对接。windows平台使用流程安装GIT,并设置去官网下载GIT,然后并安装,点击开始菜单Git Bash,出现如下窗口,则代表安装成功安装成...
2019-07-24 10:41:44
246
原创 个人成长书单
python基础《 python从入门到实践》《python基础教程》进阶《Python Cookbook》《流畅的python》应用《python3网络爬虫开发实战》《python深度学习》c语言基础 《C深度剖析》《C与指针》进阶 《C专家编程》《C语言接口与实现》《C陷阱与缺陷》《编程珠玑》通识 《深入理解计算机系统(原书第3版)》《程序员的自我修养》《Head Fir...
2019-07-15 16:31:24
378
原创 真相了,你真的了解串口通信格式吗?
前言最近在一个项目中要用到串口实现不定长数据的接收,查资料一般有两种方式,一个是串口DMA+IDLE中断,另一个是加定时器,可惜我用的华大半导体HCF030芯片,不支持串口IDLE中断,那么只能考虑加定时器这种方式了。这就牵扯到定时多久的问题,到这里,我有两个疑惑的地方,一是传送一个字节到底是传送几个bit,二是我传送多个字节的时候,中间有没有时间间隔,所以最好用示波器看一下。你眼中的串口格式...
2019-06-25 16:08:39
1045
原创 如何用示波器调试波形
序无论是做嵌入式硬件工程师,还是做嵌入式软件工程师,示波器的使用都可以算是必备技能了,因为我们在做一些牵扯到时序的项目时,遇到一些问题,看是看不出来的,用示波器抓波形往往更直观一些。恰好手头一个项目用到了SN74HC164PWRG4 串转并8位输出移位寄存器,这里以此为例讲下如何调试波形。74HC164简介1.管脚图图1是该芯片管脚图,A,B是与非门输入端,Qa~Qh是8位并行输出端,CL...
2019-03-15 22:05:20
7341
2
原创 通信协议之USB
前言USB也是当前应用比较广泛的设备,本文将挑重点对其做一些概要性的介绍,更详细的了解可以去网上找《圈圈带你学USB》这本书,属于介绍USB的经典之作。USB分类1按协议分Usb1.1 :usb1.1是标准的USB规范,高速方式的传输速率为12Mbps,低速方式的传输速率为1.5Mbps,b/s位传输速度,bps位传输速率。USB2.0:由USB规范1.1规范演变而来,传输速率达到了48...
2019-03-10 13:34:30
2138
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人