自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jxm_96的博客

菜鸟感想~~~~(>_<)~~~~

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

原创 C++(1)面向对象和类

一、 面向对象编程介绍 1. 什么是面向对象? 面向将系统看成通过交互作用来完成特定功能的对象的集合。每个对象用自己的方法管理数据。也就是说只有对象内部的代码能操作对象内部的数据。 2. 面向对象的优点 活字印刷书即面向对象思想 通过,继承、封装、多态降低程序的耦合度,并结合设计模式让程序更容易复用和修改,并且易于扩展。 面向过程的缺点:不容易维护,灵活性差,不容易扩展,更谈不上复

2017-02-09 11:10:45 405

原创 不使用循环,判断一个数是否是2的N次方

对于判断一个数是否为2的N次方问题,通常想到的最为直接的办法就是对这个数不断对2取余,为0就将该数变为该数除以2,直到最后该数为1为止。 void judge(int n) { while(!(n % 2)) { n = n / 2; if(n == 1) { printf("yes!\n); return; }

2016-12-25 23:09:36 609

原创 堆(heap)和栈(stack)有什么区别?

简单的可以理解为: heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。 预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、

2016-12-24 21:32:51 490

转载 C语言左右法则

C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的。右左法则的英文原文是这样说的:The right - left rule: Start reading t

2016-12-23 23:31:27 395

原创 strcpy,sprintf,memcpy的区别

strcpy 函数操作的对象是字符串,完成 从 源字符串 到 目的字符串 的 拷贝 功能。 sprintf 函数操作的对象 不限于字符串:虽然目的对象是字符串,但是源对象可以是字符串、也可以是任意基本类型的数据。这个函数主要用来实现 (字符串或基本数据类型)向 字符串 的转换 功能。如果源对象是字符串,并且指定 %s 格式符,也可实现字符串拷贝功能。 memcpy 函数顾名思义就是 内存拷贝,实

2016-12-23 23:27:44 335

原创 斐波那契数列及青蛙跳台阶问题

题目1: 写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。斐波那契(Fibonacci)数列定义如下: f(n)= ⎧ ⎩ ⎨ ⎪ ⎪ 0, 1, f(n−1)+f(n−2), n=0 n=1 n>2效率很低的解法: 递归解法(效率很低) [objc] view plain copylong long Fibonacci_Solution1(uns

2016-12-21 13:34:55 501

转载 #define 与 C的内存

问题1:#define到底存在程序的哪个区?#include <stdio.h>#include <STDLIB.H> #define kMAX 100 typedef struct { int ID; char * name; }Student; void test() { return; } //常量区,静态区,堆区,栈区,程序代码区

2016-12-21 13:25:04 445

转载 数组与链表的区别

1.基于空间的考虑 数组的存储空间是静态,连续分布的,估计过大造成空间浪费,估计太小又将使空间溢出机会增多。 而链表的存储空间是动态分布的,只要内存空间尚有空闲,就不会产生溢出; 链表中每个节点除了数据域外,还有指针域,存储密度小于1 (数组为1), 存储空间利用率就越高。 2. 基于时间的考虑 数组中任意节点都可以在O(1) 内直接存储访问,而链表中的节点,需从头指针顺着链表扫描才能取

2016-12-21 13:21:13 311

转载 静态库和动态库的区别

静态库与动态库的区别? 静态库: 之所以称为【静态库】,是因为在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中。因此对应的链接方式称为静态链接。 (1)静态库对函数库的链接是放在编译时期完成的。程序在运行时与函数库再无瓜葛,移植方便。 (2)它比较浪费空间和资源,因为所有相关的目标文件与牵涉到的函数库被链接合成一个可执行文件。 (3)另一个问题是静态库对

2016-12-18 16:16:41 313

转载 远指针和近指针,巨指针

char near p; /定义一个字符型“近”指针*/ char far p; /定义一个字符型“远”指针*/ char huge p; /定义一个字符型“巨”指针*/首先要从8086处理器体系结构和汇编渊源讲起。大家知道,8086是一个16位处理器,它设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;S

2016-12-18 16:14:03 330

转载 Linux 下的段错误分析

段错误产生的原因 2.1 访问不存在的内存地址 #include #include void main() { int *ptr = NULL; *ptr = 0; }2.2 访问系统保护的内存地址 #include #include void main() { int ptr = (int )0; *ptr = 100; }2.3 访问只读的内存地址 #

2016-12-18 16:11:17 355

转载 c语言数组与指针详解

好多同学都说:“老师,我看到指针就晕!”,说实话,见过晕血的,见过晕车的,晕指针的到是第一次听说! 我们先来分析一下晕车的原理,再来对比一下为什么晕指针。 晕车,是因为耳朵里的一个器官对外界的振动太敏感,导致身体调节功能紊乱,系统不能正常工作,轻则,晕点,中则,吐点,重则,“重启”(倒地)。时间长了,知道自己晕车,于是,看到公交车,TAXI,火车,自行车,都晕!这样的病就大了,上

2016-12-15 17:07:46 353

转载 文章标题struct对齐方式

//用一个宏定义FIND求结构体struct s中某个成员变量member相对struct s的偏移量. //思考:若struct s的地址为0,则其成员member的地址就是其相对于s的偏移量 //扩展: <1>sizeof(struct s) 不一定等于 sizeof(struct s中的每一个成员)的和 // <2>结构体大小不仅由成员的大小决定(sizeof(member))

2016-12-14 13:33:05 333

原创 union 和 struct

联合说明和联合变量定义  联合也是一种新的数据类型, 它是一种特殊形式的变量。联合说明和联合变量定义与结构十分相似。其形式为:  union 联合名{   数据类型 成员名;   数据类型 成员名;   …   } 联合变量名;  联合表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型 和不同长度的变量。下例表示说明一个联合a_bc:union a_bc {

2016-12-13 21:24:38 305

原创 DNS的作用

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明

2016-12-12 15:54:00 996

原创 网关

网关 网关工作原理图概述网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包

2016-12-11 13:26:15 787

转载 如何实现UDP的可靠传输

如何让UDP实现可靠传输自定义通讯协议,在应用层定义一些可靠的协议,比如检测包的顺序,重复包等问题,如果没有收到对方的ACK,重新发包UDP没有Delievery Garuantee,也没有顺序保证,所以如果你要求你的数据发送与接受既要高效,又要保证有序,收包确认等,你就需要在UDP协议上构建自己的协议。比如RTCP,RTP协议就是在UPD协议之上专门为H.323协议簇上的IP电话设计的一种介于传输

2016-12-09 21:13:23 4929

原创 TCP和UDP的区别,如何选择使用

TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。UDP(User Datagram Protocol) UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。 即使是出现网络拥堵的情况下,UDP也无法进行流量控制等避免网络拥

2016-12-08 14:48:50 822

原创 三次握手和四次挥手详解

一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 (2)确认序号:Ack序号,占32位,只有ACK标志

2016-12-07 16:23:30 285

转载 五类IP地址范围及作用

转载出处:http://blog.csdn.NET/alfredtofu/article/details/6995186IP地址分为A,B,C,D,E五类。网络号:用于识别主机所在的网络; 主机号:用于识别该网络中的主机。其中A类分配给政府机关使用,B类地址给大中型企业使用,C类地址给个人使用。这三种是主要的。IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,

2016-12-06 15:29:26 13266

原创 汇编指令大全

汇编指令大全 一、数据传输指令 ─────────────────────────────────────── 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 汇编指令大全 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,

2016-12-05 09:52:30 370

原创 线性表之顺序存储结构(C语言动态数组实现)

线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3….an)链式存储结构:是用一段一段连续的内存空间存储表中每一行的数据,段与段之间通过一个引用(指针)相互连接来,形成一个链式的存储结构 看到顺序存储结构的图示,我们可能会马上联想到C语言的数组。是的,数组就是一种典

2016-12-04 22:31:17 482

原创 测试题(2)

1、内存的分配方式的分配方式有几种?(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 (3)从堆上分配,亦称动态内存分配。动态内存的

2016-12-03 18:37:49 285

原创 如何判断CPU是大端存放还是小端存放

大端字节序:高字节存放在低地址,低字节存放在高低址 小端字节序:低字节存放在高低址,高字节存放在低地址 大小端字节顺序它是CPU的属性,所哟不同的CPU的大小端字节顺序也不同,移植的时候需要先判断当前的CPU是大端还是小端字节序,如果不同则移植需要转移字节序int num = 0x12345678 大端 小端

2016-12-02 21:52:25 363

原创 使用scanf的注意事项

scanf函数我曾经在这个函数上犯过不少错误,也看到别人犯过的错误,记下来,提醒自己不要重蹈覆辙了。如果对你有用,那就更好了:)如果你发现文章中有错误,欢迎你不吝赐 教。希望和大家一起学习!曾经错的几个地方:(xpsp2,vc6.0环境下)1.空白符问题#include<stdio.h> void main() { int a; printf("input the

2016-12-01 22:43:34 699

原创 C语言中,malloc和free深入理解

在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用—— 就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以 写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对大家有一点帮助! 如果不扯

2016-11-30 19:18:08 304

原创 测量各种数据类型的长度(包括指针),typedf关键字对数据类型的作用!

32位处理器存储单位 bit (位) 字节 = 8 bit 半字 = 2 个字节 = 16 bit 字 = 4 个字节 = 32 bit 字节长度: 变量在内存中所占的存储空间的长度 数据类型 字节长度 char 1 short 2

2016-11-29 19:08:41 401

原创 有关函数声明的注意点

在C语言中,函数声明称为函数原型(function prototype)。使用函数原型是ANSI C的一个重要特点。它的作用主要是利用它在程序的编译阶段对调用函数的合法性进行全面检查。说明: <1> 以前的C版本的函数声明方式不是采用函数原型,而只是声明函数名和函数类型。 如:float add(); 不包括参数类型和参数个数。系统不检查参数类型和参数个数。新版本也兼容这种用法,但不提倡这种

2016-11-28 17:39:35 600

原创 容易被忽略的输入和输出

在C语言里,我们经常用scanf作为输入语句,用printf输出。那么关于输入和输出,你到底了解多少呢?一、关于“&”  首先我们来看一容易被忽略的输入和输出#include

2016-11-27 00:13:35 362

原创 C语言中,malloc和free深入理解

在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用—— 就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以 写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对大家有一点帮助! 如果不扯

2016-11-25 19:53:49 324

转载 C和C++中struct和typedef struct的异同

分三块来讲述:   1 首先://注意在C和C++里不同     在C中定义一个结构体类型要用typedef:     typedef struct Student     {     int a;     }Stu;     于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明)     这里的Stu实际上就是s

2016-11-24 20:15:54 360

原创 汇编语言编写十进制数到二进制数的进制转换并显示的子程序

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

2016-11-23 19:05:24 6270

转载 C++重要知识点小结---1

1.C++中类与结构的唯一区别是:类(class)定义中默认情况下的成员是private的,而结构(struct)定义中默认情况下的成员是public的。::叫作用域区分符,指明一个函数属于哪个类或一个数据属于哪个类。::可以不跟类名,表示全局数据或全局函数(即非成员函数)。3.类名加载成员函数名之前而不是加在函数的返回类型前。 错误:Tdate::void Set(int m , int d

2016-11-22 21:16:25 307

原创 五种IO 模式——阻塞(默认IO模式),非阻塞(常用语管道),IO多路复用(IO多路复用的应用场景),信号IO,异步IO

五种I/O 模式: 【1】阻塞 I/O(Linux下的I/O操作默认是阻塞I/O,即open和socket创建的I/O都是阻塞I/O) 【2】非阻塞 I/O(可以通过fcntl或者open时使用O_NONBLOCK参数,将fd设置为非阻塞的I/O) 【3】I/O 多路复用(I/O多路复用,通常需要非阻塞I/O配合使用) 【4】信号驱动 I/O(SIGIO) 【5】异步 I/O一般来说,程序

2016-11-22 21:08:57 577

原创 蓝桥杯(2)

问题描述   小于10的自然数中有四个数字能除尽3或5(3, 5, 6, 9),它们的和为23。   请计算所有小于1000的自然数中能除尽3或5的数字的合。然后使用标准输出cout,输出你的结果。 输入格式   无。 输出格式   一行一个整数,表示你的结果。#include<stdio.h> int judge(int x) { if(x%3==0||x%5==0

2016-11-20 12:09:42 534

原创 PID算法基本知识讲解

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

2016-11-20 12:07:46 2445 1

转载 pwm波

首先说一下舵机,想要控制舵机,那么我们就需要一个周期T = 20ms。高电平小t等于0.5ms-2.5ms之间的这样一个方波。 为什么是这个参数呢?因为 t (高电平在一个周期内持续时间) t = 0.5ms——————-舵机会转动 0 ° t = 1.0ms——————-舵机会转动 45° t = 1.5ms——————-舵机会转动 90° t = 2.0ms——————-舵机

2016-11-18 21:02:43 449

原创 实现常用字符串函数的功能

在现在的Linux版本下,支持许多的API函数,平时我们用得是挺舒服的,但是我们不光要用API函数,更重要的是,我们要知道这些API函数是怎样工作,执行的。我就用字符串的几个重要的函数来举例 一:字符串比较函数strcmp();#include <stdio.h> #define MAX_SIZE 1024 int my_strcmp(charchar *dest, charchar

2016-11-18 21:00:24 351

转载 蓝桥杯(1)

立方尾不变有些数字的立方的末尾正好是该数字本身。 比如:1,4,5,6,9,24,25,….请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。请提交该整数,不要填写任何多余的内容。思路分析: 这道题还是很简单的。 只要通过枚举1-10000然后计算出该数的立方。在对该数立方取该数的位数 if(该数立方%该数位数 ==

2016-11-16 22:17:08 561 2

原创 密码的输入带*号,可删除

#include <stdio.h>int main(){ char mima[10]={0},i=0; printf("请输入密码:"); while(1) { mima[i]=getch(); switch(mima[i]) { case '\b'://

2016-11-15 21:31:10 420

空空如也

空空如也

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

TA关注的人

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