自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

女王有颗钻石心

小白一枚。仅以博客记录自己的学习过程以及方便向各位大牛讨教。啊。真希望有一天能把最前面那一句删了呀 哈哈。

  • 博客(143)
  • 收藏
  • 关注

转载 c语言==野指针形成原理、造成的危害及避免方法(22)

野指针 : 随机指向一块内存的指针成为野指针。(因为在计算机中,内存的分配由操作系统来管理,要使用内存需要先向操作系统申请,系统分配后才可以使用,而野指针的内存空间是随机分配的,属于非法访问内存。) 野指针造成的错误叫做内存泄漏,但存在野指针并不一定每次运行程序都会出现段错误,因为可能某次给野指针随机分配的内存地址是其它变量已经申请过的内存地址,这种情况不会出现段错误。 怎样避免野指

2016-12-03 14:21:12 1432

原创 c语言==测量各种数据类型的长度以及typedf关键字对数据类型的作用(21)

32位处理器存储单位 bit (位) 字节 = 8 bit 半字 = 2 个字节 = 16 bit 字 = 4 个字节 = 32 bit 字节长度: 变量在内存中所占的存储空间的长度 数据类型 字节长度 char 1 short 2 int 4 long 4 float 4 double 8 指针 4 指针类型为什么是4个字节? 因为所有的

2016-12-02 21:52:41 436

转载 c语言==8位数据越界处理(20)

8位有符号数的取值范围是-128~+127,为什么呢? 首先我们知道,计算机以补码的形式存储的,正数的补码是原码不变,负数的补码是原码的取反加1。 我们先来看+127,原码0111 1111对吧,若+128是多少呢,0111 1111 + 1 = 1000 0000 (原码),然后存储时,计算机一看是最高位为1,就保持符号位不变,后面7位取反加1,然后呢,进位舍弃,还是1000 0000(-12

2016-12-01 22:41:20 713

原创 六级==11.30一些词汇与句子(2)

immerse:使浸没,使沉浸在,使专心于 indulge:沉溺于,满足(欲望),纵容 retrieve:重新得到,收回,挽回,补救;检索 revive:使复苏,恢复 suppress:压制,镇压;禁止发表,查禁;抑制;阻止……的生长(或发展) brisk:adj.轻快的;生意兴隆的;天气寒冷而清新的 conceive:v.构思,想象,怀胎,怀孕 contemplate:v.盘算,思量

2016-11-30 16:38:54 503

原创 c语言==常见问答细节点(19)

关键字const的作用是什么?const意味着只读,而本质上,const在谁的后面,谁就不可以被修改,如果const在最前面修饰,则向后推一位。 1) 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉用户这个参数的应用目的。 2) 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。 3) 合理地使用关键字const可以使编译

2016-11-29 16:33:55 264

原创 c语言==变量存储位置和堆栈的区别(18)

明显的看出全局变量还有static是存储在一起的,局部变量在一起,常数有自己的地方,malloc也是。从而可以知道虚拟地址空间的分配:栈空间存放局部变量,函数形参堆空间存放malloc,relloc,calloc分配空间、数据段里面有BSS区,rodate区,date区,BSS存放未初始化全局变量,rodate存放常量,date存放全局变量和static修饰的变量堆和栈的区别:1 堆是先进先出,而栈

2016-11-28 21:57:35 488

原创 Linux c==几种进程间通信方式的特点对比 (22)

linux上面的IPC大多都是从UNIX上面继承而来。 最初Unix IPC包括:管道、FIFO、信号。System V IPC包括:System V消息队列、System V信号灯、System V共享内存区。由于Unix版本的多样性,电子电气工程协会(IEEE)开发了一个独立的Unix标准,这个新的ANSI Unix标准被称为计算机环境的可移植性操作系统界面(PSOIX)。现有

2016-11-27 19:36:50 737

原创 Linux c==Shell的管道及命令 (21)

1. 管道命令: | 管道命令只能执行前一个命令的standard output 而不能接收 standard error output2. Cut:选取命令,切出信息中的一段。-d:后面接分割字符,根据分割字符,分成数段,与-f一起使用,-f指明取出第几段。 -c:以字符的单位取出固定的字符区间。3. Cut使用范例:echo $PATH | cut –d ‘:’ –f 3,5 将PATH

2016-11-26 23:30:03 321

原创 Linux c==TCP的多个客户端连接服务器 (20)

通过父子进程实现TCP的多个客户端连接服务器 tcp_sever_fork.c#include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <errno.h> #include <arpa/inet.h>

2016-11-25 17:07:29 3405

转载 Linux c==多线程的聊天室实现(服务器端) (19)

服务器端的主要功能: 实现多用户群体聊天功能(此程序最多设定为10人,可进行更改),每个人所发送的消息其他用户均可以收到。用户可以随意的加入或退出(推出以字符串“bye”实现),服务器也可以进行关闭。 服务器端的程序结构: 总共有三个函数:主函数(main),实现服务器端的初始化,接受连接;消息处理函数(rcv_snd),接受某一用户的消息,将其进行简单处理之后发送

2016-11-24 14:18:19 725

转载 Linux c==Makefile最简版本 (18)

大学有阵子做嵌入式的时候觉得Makefile简直高不可攀~~教程大多数都在试图把许多细节都讲清楚~~没有跟教程死磕3天的劲头真的不容易搞懂Makefile而且写Makefile需要一点点gcc编译器的储备知识。对于在Linux上刚上手的开发者的确有点绕。所以我在这里做了个最简版的Makefile,看懂这个,你大体能知道Makefile该怎么写~~~~其他细节,只能“大行不顾细谨”了从这里下载Make

2016-11-23 21:21:01 421

原创 c语言==两个结构体之间的相互调用(17)

指向结构体类型变量的使用 首先让我们定义结构体: struct stu { char name[20]; long number; float score[4]; } ; 再定义指向结构体类型变量的指针变量: struct stu *p1, *p2 ; 定义指针变量p 1、p 2,分别指向结构体类型变量。引用形式为:指针变量→成员; [例7-2] 对指向结构体类型变量的正确使用

2016-11-22 14:23:39 3975

原创 微机原理==汇编语言编写十进制数到二进制数的进制转换并显示(11)

不同进制间转换一直是汇编语言必须要掌握的编程技巧,算法也比较简单: 例如:当其他进制数转为十进制时使用的除十取余法,压入栈中,弹出后实现逆序输出; 当其他进制数转为二进制时使用的除二取余法,压入栈中,弹出后实现逆序输出; 进而扩展:当其他进制数转为R进制时使用的除R取余法,压入栈中,弹出后实现逆序输出; 下面介绍一种比较简便的方法,通过移位指令实现的十进制数到二进制数形式的进制转换程序,

2016-11-21 20:52:03 4060

转载 Linux c==PID算法基本知识讲解 (17)

首先帮大家解决一下什么是PID调节,为什么就要这样的疑惑。 PID是比例,积分,微分的英文单词的首字母的简称。下面举个例子说明一下PID,让大家有个感官的认识,。 一个人闭眼走路,假设他知道自己离目的地有100米远,那么他就可以以每秒一米一步这样的速度走向目的地,100米刚刚好是100步,这是一个非常理想化的现象。假设他不知道目的地有多远,目的地可能是1000米也有可能是10000米,他用每

2016-11-20 12:16:30 1194

原创 Linux c==静态链接的空间和地址分配(16)

多个文件链接在一起的时候,会做到相似段合并,数据段在一起,代码段在一起。 这样能节省空间,对于x86的硬件来说段的装载地址和空间的对齐单位是页,是4096个字节,如果一个个段分开存放,会造成大量的内部碎片。 链接器为目标文件分配空间和地址: 【1】输出的可执行文件的空间 【2】装载后的虚拟地址的虚拟地址空间a.cinclude

2016-11-19 22:25:54 511

原创 Linux c==信号量实现线程之间的PV操作(16)

1.信号量实现线程之间的PV操作,实现线程同步和互斥的数据模型? (1).sem_init函数 函数作用:初始化信号量 函数原型:int sem_init(sem_t *sem,int pshared, unsigned int value) 参数:sem:信号量指针 Pshared:决定信号量能否在几个进程间共享,一般取0 Value:信号量的初始值 (2).

2016-11-18 23:05:49 3015

原创 Linux c==使用父子进程实现TCP通信(15)

#include <stdlib.h> #include <stdio.h> #include <errno.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #define MY

2016-11-17 15:57:07 529

原创 微机原理==8086存储器编址和IO编址(10)

1)存储器编址 由于微处理器内部的寄存器和ALU都是16位的,为了方便20位的地址管理,在8086对存储器管理的设计中,采用了分段管理的技术。 采用分段方法进行编址的优点: 减少指令长度,提高指令执行速度。 为程序的浮动装配创造了条件。 (1)物理地址和逻辑地址 对应每个物理存储单元都有一个唯一的20位编号,就是物理地址,从00000H~FFFFFH。 用户编程时,采用逻

2016-11-16 23:05:46 2209

原创 微机原理==常用汇编指令(9)

1、 MOV(传送) 指令写法:MOV target,source 功能描述:将源操作数source的值复制到target中去,source值不变 注意事项:1)target不能是CS(代码段寄存器),我的理解是代码段不可写,只可读,所以相应这地方也不能对CS执行复制操作。2)target和source不能同时为内存数、段寄存器(CS\DS\ES\SS\FS\GS)3)不能将立即数传

2016-11-15 21:17:50 12340 3

原创 c语言==密码用*表示(16)

#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int x = 0; char c; char Password[6]; printf("请输入密码\n\n"); while(x < 5 && c != 13) //13是回车符

2016-11-14 21:54:35 732

原创 c语言==字节、半字、字对齐方式(15)

一、字节对齐基本概念 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取

2016-11-13 21:14:48 1662

原创 Linux c==使用UDP实现网络通信(14)

UDP 前面已经讲过tcp网络通信,然后tcp每次通信都要进行三次握手连接,虽然传输的可靠性比较高,但对于一些及时性的数据的传输显得太过费时,所以就有了UDP这种无连接通信,但数据容易出错。<span style="font-family:SimSun;font-size:18px;">#include <stdlib.h> #include <stdio.h> #include

2016-11-12 22:00:05 500

原创 Linux c==套接字(13)

一、什么是socket socket,即套接字是一种通信机制,凭借这种机制,客户/服务器(即要进行通信的进程)系统的开发工作既可以在本地单机上进行,也可以跨网络进行。也就是说它可以让不在同一台计算机但通过网络连接计算机上的进程进行通信。也因为这样,套接字明确地将客户端和服务器区分开来。二、套接字的属性套接字的特性由3个属性确定,它们分别是:域、类型和协议。1、套接字的域它指定套接字通信中使用的网

2016-11-11 20:23:35 486

原创 Linux c==网编编程函数的补充以及举例(12)

1.字节序的转化函数: 头文件:#include #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <netinet/in.h> #include <

2016-11-09 14:31:36 439

原创 微机原理==数据的多段存储(8)

举例说明8086如何用多个段存储数据: 说明: ①定义多个段和我们以前讲的定义代码段一样,只是段名不同而已。 ②程序中有多个段如何访问这些数据呢,以及如何知道这些数据时代码段还是数据段或者堆栈段呢,段名就相当于一个表号,它代表段地址,所以就通过mov ax,data(标号),然后将这个ax传给ds,那就是数据段,传给ss,那就是堆栈段。 ③我们只是要一段空间,你把这个空间的段地址给ss,

2016-11-08 16:40:53 877

原创 Linux c==网络通信协议TCP(11)

TCP的上一层是应用层,TCP向应用层提供可靠的面向对象的数据流传输服务,TCP数据传输实现了从一个应用程序到另一个应用程序的数据传递。它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信。),应用程序通过向TCP层提交数据接发送/收端的地址和端口号而实现应用层的数据通信。 通过IP的源/目的可以惟一地区分网络中两个设备的连接,通过socket的源/目的可以惟一地区分网

2016-11-07 20:14:15 1047

原创 单片机硬件==PCB的使用注意事项

PCB新手值得一看! 一、如何将一个原理图中的一部分加到另一张原理图上? 答:利用块拷贝。首先将要拷贝的原理图的那部分做成块,用其他文件名存储,然后调入目标原理图利用块读命令。二、为何最后生成的制版图与原理图不相符,有一些网络没有连上? 答:这种情况是很容易发生的,确实原理图上很明显是连上的,最后形成的制版图也与原理图生成的网络表对照过的,没有发现为连上的网络。这种问题出现在原理图上,原

2016-11-06 22:13:55 1272

原创 Linux c==三种校验方法(10)

奇偶校验根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。 校验方法 奇校验:就是让原有数据序列中(包括你要加上的一位)1的个数为奇数 10

2016-11-05 21:49:11 985

原创 微机原理==第二章16位和32位微处理器(7)

GDT:全局描述符表。一个系统只能有一个全局描述符表。 LDT:局部描述符表。可以有很多个,并且它本身的存储段放在GDT中。 GDTR:全局描述符表寄存器。存放的是全局描述符表GDT的基地址和16位的界限值。其实说白了:这些绕来绕去,关键是看基地址的存放,知道基地址就可以根据基地址和偏移量就可以找到对应的段。所以观察基地址。选择子:里面存放的是13位段描述索引和TI描述符指示标志(为0,就到

2016-11-04 21:36:57 534

原创 Linux c==汇编语言程序(9)

一、汇编语言程序格式及开发过程 汇编语言——用指令的助记符、符号地址、标号等符号书写程序的语言。 源程序—— 用汇编语言编写的程序。 汇编——把源程序翻译成机器语言程序的过程。 汇编程序——完成汇编任务的程序。1、汇编语言语句 三种基本语句: 指令语句(指令性语句) : 在汇编时产生一个目标代码。 伪指令语句(指示性语句): 无目标代码,为汇编程序服务。 宏指令语句二

2016-11-03 21:23:23 482

原创 Linux c==sqlite3(8)

1 、sqlite3常用命令当前目录下建立或打开test.db数据库文件,并进入sqlite命令终端,以sqlite>前缀标识:sqlite3 test.db查看数据库文件信息命令(注意命令前带字符’.’): sqlite>.database查看所有表的创建语句: sqlite>.schema查看指定表的创建语句: sqlite>.schema table_name以sql语句的形式列出

2016-11-02 23:04:22 300

原创 Linux c ==线程之间的互斥(7)

mutex互斥锁线程控制 互斥锁是用一种简单的加锁方法来控制对共享资源的原子操作。 互斥锁只有两种状态,也就是上锁和解锁,可以把互斥锁看作某种意义上的全局变量。 在同一时刻只能有一个线程掌握某个互斥锁,拥有上锁状态的线程能够对共享资源进行操作。若其他线程希望上锁一个已经被上锁的互斥锁,则该线程就会挂起,直到上锁的线程释放掉互斥锁为止。互斥锁的基本操作: 互斥锁初始化:pthread_

2016-11-02 00:00:47 383

原创 微机原理==第二章16位和32位微处理器(6)

字节串检索SCASB ;(AL)-(ES:[DI]) ;DI←(DI)±1字串检索SCASW ;(AX)-(ES:[DI]) ;DI←(DI)±2影响标志位字节串读取LODSB ;AL←(DS:[SI]) ;SI←(SI)±1字串读取LODSW ;AX←(DS:[SI]) ;SI←(SI)±2不影响标志位字节串

2016-10-31 17:41:06 669

原创 微机原理==第二章16位和32位微处理器(5)

(1)逻辑运算指令AND可用于复位某些位(同0相与),不影响其他位。例如: and bl,11110110B OR可用于置位某些位(同1相或),不影响其他位。例如: or bl, 00001001B XOR指令可用于求反某些位(同1相异或),不影响其他位。例如: xor bl, 00001001B(2)移位指令对寄存器操作数或内存操作数进行指定位数的移位。可一次移一位,也可一次移位CL规定的次数

2016-10-30 22:27:15 636

原创 微机原理==第二章16位和32位微处理器(4)

(1)通用传送指令MOVMOV DST,SRC;(SRC)→DSTmov al,4 mov si,200h mov byte ptr [si],0ah mov word ptr [si+2],0bh mov al,’1’ mov ax,bx mov ah,almov dx,[bp] mov es,[si] mov ds:[bp],dlmov ds

2016-10-28 21:50:12 599

原创 Linux c==消息队列(6)

一、什么是消息队列 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度。二、在Linux中使用消息队列 L

2016-10-27 22:52:31 520

原创 Linux c==进程通信--信号(5)

进程通信—信号 产生信号的条件 1、当用户按某些按键时,产生信号 2、硬件异常产生信号:除数为0、无效的存储访问等等。这些情况通常由硬件检测到,将其通知内核,然后内核产生适当的信号通知进程,例如,内核对正访问一个无效存储区的进程产生一个SIGSEGV信号 3、进程用kill函数将信号发送给另一个进程 4、用户可用kill命令将信号发送给其他进程下面是几种常见的信号: SIGH

2016-10-26 23:31:57 330

原创 Linux c==进程通信--有名管道(4)

命名管道和无名管道基本相同,但也有不同点:无名管道只能由父子进程使用; 但是通过命名管道,不相关的进程也能交换数据。 命名管道的使用创建管道mkfifo 打开管道open 读管道read 写管道write 关闭管道close 删除管道unlink函数mkfifo函数作用:创建有名管道 函数原型:int mkfifo(const char * pathname, mode_

2016-10-25 21:40:41 512

原创 Linux c==进程通信--无名管道(2)

管道的概念管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。管道的分类管道包括无名管道和有名管道两种,前者用于父进程和子进程间的通信,后者可用于运行于同一系统中的任意两个进程间的通信。读写端口一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据。管道提供了简单的流控制机制,进程试图读空管道时,进程将阻塞。同样,管道已经满时,进程再试图向管道写入数据

2016-10-24 20:46:11 539

原创 Linux c==嵌入式文件编程(2)

Linux文件操作1.什么是文件?linux如何看待文件? Linux一点哲学,“一切皆为文件”;在Linux中对目录和设备的操作都等同于对文件的操作,都是使用文件描述符来进行的。 Linux文件可分为:普通文件,目录文件,链接文件,设备文件,管道文件。2.如何来操作文件? C库函数的文件操作是独立于具体的操作系统平台的,不管是在DOS、Windows、Linux还是在VxWorks中都是这些

2016-10-23 22:43:22 364

空空如也

空空如也

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

TA关注的人

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