自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 Makefile 中 echo 和@echo的区别

Makefile 中 echo 和@echo的区别echo: 会在shell中显示echo这条命令和后面要输出的内容@echo: 不会显示echo这条命令,只会显示后面要输出的内容例如:echo “hello” 输出为:echo “hello” hello@echo “hello” 输出为:hellomake在执行命令之前会把要执行的命令进行输出,称之为回显如果要执行的命令以字符@开始,则不会回显,1.@echo XXX…在执行命令时,将输出XXX…2.echo XXX…在执行命

2020-10-17 14:32:40 2775

原创 简单工厂模式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、创建头文件二、创建.c文件1 cat.c2.dog.c3 person.c三.创建main.c四.运行结果总结前言工厂模式:常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。.h -> ①创建一个共用类(结构体)②声明函数.c ->对类具体化(对象)围绕着结构体

2020-10-05 16:49:04 198

原创 什么时候需要给指针分配内存malloc

1、你想要随意分配内存空间,自己来管理和释放;或者你想要在函数执行结束时,所分配的变量还在,那就用malloc#include <stdio.h>int main(){ int *p =(int *)malloc(100); *p = 5; printf("%d\n",*p); return 0;}注意:C语言中是不可以直接给指针赋值的,如:*p = 5.需要先申请一块内存,才可以给指针赋值。但字符串常量却可以。2、为什么字符串可以赋值给字符指针变

2020-09-10 15:58:18 2874 8

原创 int *p(int x)与int (*p)(int x)的区别

1、int *p(int x)int *p(int x):指针函数,是个函数参数为一个int变量,它的返回值是一个int的指针若定义了一个这样的函数: int *p(int x);则这样赋值: int *ptr = p(4);2、int (*p)(int x)int (*p)(int x):函数指针,p指向一个函数的起始地址,它相当于一个函数的别名,它的返回值是int型(不是指针)若定义了一个这样的函数: int fun(int x);则这样赋值: int (*p)(int x) = fun;

2020-09-10 11:18:57 981

原创 C语言面试题(2)

1.设计实现strcpychar * strcpy( char* str1,const char* str2)这个函数把字符串src复制到一分配好的字符串空间dst中,复制的时候包括标志字符串结尾的空字符一起复制。操作成功,返回dst,否则返回NULL.char * my_strcpy( char* str1,const char* str2){ char *ret = str1; assert(str1); //断言,检查指针是否存在 assert(str2); wh

2020-09-05 16:36:49 150 1

原创 C语言面试题(1)

1.下面程序运行结果是?#include <stdio.h>void func(int b[]){ int j; for(j=0;j<4;j++) b[j]=j; }int main(){ int a[4] = {5,6,7,8},i; func(a); for(i=0;i<4;i++) printf("%2d",a[i]); return 0;}0 1 2 3(因为子函数的形参传的是数组的地址)下面函数有什么问题?void DoSome

2020-09-04 11:39:50 109

转载 const,static,volatile关键字的作用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录const关键字:static关键字:volatile关键字:参考大佬文章:https://www.cnblogs.com/nanqiang/p/9897891.htmlconst关键字:1.欲阻止一个变量被改变,可使用const,在定义该const变量时,需先初始化,以后就没有机会改变他了;2.对指针而言,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;3.在一个函数声

2020-09-02 23:18:29 341

原创 基于树莓派的智能家居系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录概述一、硬件组成二、软件三.获取空调遥控器红外编码四.树莓派与Arduino进行TCP协议通信(1) 将Arduino做为服务端(2) 树莓派作为客户端概述使用树莓派、Arduino、语音模块、红外模块实现对家用空调进行控制树莓派与Arduino进行TCP协议通信树莓派与语音模块,Arduino与红外模块都进行串口通信一、硬件组成图1.树莓派图2.Arduino图3.语音模块图4.红外模块二、软件

2020-08-31 21:21:30 7362 1

原创 结构体大小方式计算

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言1、简单结构体2、成员包含数组的结构体3、成员包含结构体的结构体4、成员包含联合体的结构体5、指定对齐大小参考大佬文章:https://blog.csdn.net/chenlichenforlinux21/article/details/103311310前言我们实际生活中,保存的数据一般不会是同一种类型,所以引入了结构体。而结构体的大小也不是成员类型大小的简单相加。需要考虑到系统在存储结构体变量时的地址对齐问题。对齐

2020-08-31 15:47:32 118

原创 字符设备驱动框架——IO操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、驱动框架二、控制树莓派pin4引脚树莓派芯片手册地址映射pin4脚地址映射配置寄存器三.整体完整代码前言驱动两种加载方式:文件编译进内核,zImage包含了驱动以模块(modules)方式生成驱动文件xxx.ko,系统启动后,通过命令inmosd xxx.ko加载我们一般用第二种一、驱动框架#include <linux/fs.h>#include <linux/module.h&gt

2020-08-31 11:08:05 262

原创 Linux学习篇——内核结构

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、内核结构用户态内核态二、Linux内个源码的目录结构参考大佬文章:https://www.cnblogs.com/tinylaker/p/9810075.html一、内核结构用户态我们在此空间编写应用程序,调用C库中的各种API(如文件管理,进程间通信,网络编程的各种函数)。而我们调用这些程序“接口”,真正干活的是内核。所以C库的作用:提供应用程序支配内核干活的接口内核态主要由5部分组成:进程调度:负责管

2020-08-30 23:59:35 107

原创 Linux学习篇——软硬链接

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、软链接概念如何生成二.硬链接概念如何生成参考大佬文章:https://www.cnblogs.com/zhangna1998517/p/11347364.html一、软链接概念软链接文件有类似于Windows的快捷方式。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。你选定的位置上生成一个文件的镜像,不会占用磁盘空间如何生成ln -s 要被链接的文件 软链接文件名字示例:二.

2020-08-30 11:14:49 94

原创 树莓派Linux内核替换

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、准备工作二、修改配置文件配置config编译打包数据拷贝将SD卡转插到树莓派一、准备工作安装好对应交叉编译工具将需要替换的Linux拷进Ubuntu二、修改配置文件驱动代码的编译需要一个提前编译好的内核,编译内核必须配置。配置的最终目标会生成.config文件,该文件知道Makefile去把有用的东西组织成内核内置内核一般有一下三种方式:将厂家的复制配置成内核源码。前提是硬件没有改动,若因为某些原因(降

2020-08-29 23:39:35 1750

原创 Linux库之静动态库的生成和使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、静态库与动态库?静态库动态库二、静态库的制作及使用1.命名规则2.制作步骤3.库的使用三.动态库的制作及使用1.命名规则2.制作步骤3.库的使用前言当要把程序给别人,但不想让他看到原代码的时候,可以将程序编译成“库”发给他。相当于对程序进行了加密,别人可以使用,但看不到里面的内容。一、静态库与动态库?①.静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。②.动态库在程序编译时并不会被连接到目标

2020-08-29 21:15:21 158

原创 分文件编程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言例子以加法为例二、编译前言有时一个项目需要实现很多模块功能,如果把这些模块代码都塞进main函数里,会显得程序臃肿,不美观。针对这一现象,可引入分文件编程例子实现两个整数的加减乘除。以加法为例a.创建.h文件,用于声明函数#ifndef JIAFA_H#define JIAFA_Hint jiafa( int a, int b);#endifb.创建.c文件,编写函数代码#include <s

2020-08-29 17:23:47 337

原创 基于Linux的FTP文件传输项目(类似百度云)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录项目功能一、服务端1.定义命令宏2.命令转换3.服务端的网络编程4.实现LS,PWD功能5.实现GET功能6.实现PUT功能7.实现CD,QUIT功能二、客户端1.实现LS,PWD,CD,GET功能2.实现PUT功能3.实现LLS,LCD,QUIT功能打印服务端的数据整体项目代码总结项目功能显示服务端文件:ls显示服务端路径:PWD切换服务端目录:CD获取服务端文件:GET将客户端文件上传到服务端:PUT显示客户端

2020-08-28 23:40:12 755

原创 Linux系统学习篇——网络编程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、什么是字节序?例子字节序转换地址转换二、Sockt服务端和客户端开发步骤服务端:1.socket2.bind3.listen4.accept客户端1.socket2.connect实现双方聊天运行结果前言前面所学的几种进程间通信(管道,消息队列,共享内存,信号量)都是基于单机通信,而要实现多机通信,需使用网络编程,实现多机通信。网络编程中主要使用TCP/UDP这两种协议,两协议特点:1.TCP提供可靠的服务。通过T

2020-08-28 18:07:44 189

原创 Linux系统学习篇——多线程和互斥锁

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录进程与线程一、线程开发相关API1. 线程创建2. 线程退出3. 线程等待4. 线程脱离5. 线程ID获取及比较例子二、互斥锁1.创建及销毁互斥锁2.加锁及解锁例子下文转自:https://www.cnblogs.com/xiehongfeng100/p/4620852.html#autoid-1-2-0进程与线程典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在

2020-08-28 00:33:59 210

原创 Linux系统学习篇——进程间通信(单机)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、管道1.特点2.原型3.例子二、命名管道FIFO1.特点2.原型3.例子三.消息队列特点总结下文转自:https://blog.csdn.net/chenpuo/article/details/81183678前言进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、S

2020-08-27 20:24:51 373

原创 Linux系统学习篇——多进程和exec族函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、多进程的目的二、如何创建进程?三、exec族函数一、多进程的目的1.一个父进程希望复制自己,使父,子进程同时执行不同的代码段。2.常用于网络服务——父进程等待客户端的服务请求,当客户端的请求到达时,父进程调用fork,使子进程处理此请求。父进程则继续等待下一个服务请求到达。3.一个进程要执行另一个程序。当满足设定设定条件时,子进程从fork返回后立即调用exec族函数,去处理另外事务。二、如何创建进程?使用fork

2020-08-26 22:15:28 167

原创 Linux系统学习篇——进程概述

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、什么是程序?什么是进程?二、如何查看系统中有哪些进程?三、什么是进程标识符?四、什么是父进程,子进程?五、C程序的存储空间是如何分配的?一、什么是程序?什么是进程?程序时静态的概念,当对一个.c文件进行编译(gcc xxx.c -o pro)时,在磁盘中生成的pro文件,就是程序进程是程序的一次运行活动,通俗来说就是,程序运行起来了,系统就多了一个进程二、如何查看系统中有哪些进程?1.使用PS指令:实际操作中,通常配

2020-08-26 17:15:00 163

原创 Linux系统学习篇——open、read、write、close、光标定位lseek

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、open二、read函数原型:三、write函数原型:四、close函数原型:五、lseek函数原型:前言Linux当中有句俗语:一切皆文件。即涉及的有关内容都由文件描述符(fd)代替。而对文件的操作,常用的函数就是open、read、write、close。一、openopen所需的头文件: #include <sys/types.h> #include <sys/stat.h>

2020-08-26 15:50:01 445

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除