自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (4)
  • 收藏
  • 关注

原创 几种字符串倒序输出

1、使用指针#include #include #include int main(int argc, char** argv){ char *src="I am a student"; char *dest=NULL; char *ss=NULL; int i, len; char *p1, *p2; len = strlen(src); p

2016-09-27 17:16:24 1068

转载 C++虚函数及虚函数表解析

出自原文:http://www.keepsimply.org/2012/07/11/cpp-vtable/一、背景知识(一些基本概念)虚函数(Virtual Function):在基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数。纯虚函数(Pure Virtual Function):基类中没有实现体的虚函数称为纯虚函数(有纯虚函数的基类称为虚基类)。

2016-03-03 12:42:22 594

翻译 用二级指针删除链表

前几天在网上查找资料是看到了有大牛用二级指针操作链表,然后呢,我也在此写出来与大家分享一下,同时呢也做一下笔记。一般的,我们都是用一级指针做删除链表的工作,如下:typedef struct node{ struct node * next; ....} node; typedef bool (* remove_fn)(node const * v); // R

2015-12-20 22:34:21 963

转载 带头节点链表和不带头节点链表的初始化

带头结点初始化Node *head; //声明头结点void InitList(Node **head){ *head=(Node *)malloc( sizeof(Node)); (*head)->next=NULL;}带头结点尾插入,统一操作。方式一:void CreatList(Node **head){ Node *r=*head,*s;

2015-12-13 21:53:18 5599

原创 C语言不定参数的函数

(1)va_list      定义了一个指针arg_ptr, 用于指示可选的参数.(2)va_start(arg_ptr, argN)使参数列表指针arg_ptr指向函数参数列表中的第一个可选参数,argN是位于第一个可选参数之前的固定参数, 或者说最后一个固定参数.如有一va函数的声明是void va_test(char a, char b, char c, ...), 则它的

2015-11-28 13:54:19 839

原创 用汇编编写一个从键盘上输入并排序的程序

用汇编编写一个从键盘上输入并排序的程序data segment shuzi_w db 0 key DW 100 dup(0) ;输入的数的存放位置 buffer dw 0 ;输入数字的暂存位置 输入的数字大于10 需要缓冲 n db 1 ; 总共输入的数字个数 注意从1开始 loop循环原因 n1 db

2015-11-20 20:42:14 2042 1

转载 linux终端版学生信息管理系统【C语言实现】

/*-----------------------------------------------------------------------------------------程序名:stu_management.c程序功能:         1.鉴别root权限,设置管理员和学生权限,管理员和学生可以异步登录         (如果加入网络模块就可以实现多用户同步登录)

2015-11-02 16:46:07 6820 3

转载 C++进阶之路

结合一些我的学习经历,希望对于想学C++的人有些帮助. 大家有什么好想法望提出我老师最初是从C语言教起的,用的是潭浩强的>这本书,那时候命令执行都是在CMD里实现,用的编译器是turboc最经常用到的就是 printf cin 对于效率不是很在乎,只要能执行就好了,连warning都忽略(这个很不应该).后来又学了C++,是清华大学出版的>,用的编译器是VC6.

2015-10-31 17:27:05 717

原创 S3C2440裸机之S3C2440GPIO

s3c2410共有117个GPIO(通用IO)pin,每个IO口至少要有两个寄存器,即通用IO控制寄存器(GPxCON)和通用IO数据寄存器(GPxDAT)。数据寄存器的各位都直接引到芯片外部,而对数据寄存器中每一位的作用,即每一位的信号流通方向时输入还是输出,则可以通过控制寄存器中对应位独立的加以设置。这样,有无GPIO接口也就成为微控制器区别于微处理器的一个特征。       其中有8po

2015-10-31 15:22:35 574

转载 C语言类与对象的实现

本文转自:http://www.cnblogs.com/chencheng/archive/2012/12/22/2825692.html为什么要用C来模拟面向对象的机制,在实际的工作中我们往往在感慨一些面向对象的经典设计模式由于C语言的限制无法使用,其实通过简单的模拟面向对象的行为,在C语言中也可以使用这些模式。1:类的构建类描述了所创建的对象共同的属性和

2015-10-06 16:46:47 1616

转载 C语言设计模式与接口

本文转自:http://www.cnblogs.com/chencheng/archive/2013/01/06/2848296.htmlC语言的设计模式-接口隔离接口隔离:定义为客户端不应该依赖它不需用的接口,在C语言中我们可以把头文件看成一个模块的接口,根据接口隔离原则也就是说这个头文件中只能包含外部需要的接口,但在实际的项目中往往头文件都不符合接口隔离原则。

2015-10-06 16:31:33 681

原创 C语言之回调函数

回调函数:通过函数指针调用的函数。把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指的函数时,我们就说这时回调函数。

2015-09-30 19:34:09 537

原创 字符串匹配

一.简单匹配算法 先来看一个简单匹配算法的函数: int Index_BF ( char S [ ], char T [ ], int pos ) {         /* 若串 S 中从第pos(S 的下标0≤pos       起存在和串 T 相同的子串,则称匹配成功,返回第一个         这样的子串在串 S 中的下标,否则返回 -1    */    

2015-09-23 16:41:25 323

转载 字符串处理的两个问题

字符处理的两个问题:处理字符是C语言中的常见操作,有两个问题需要讨论:一是判断字符处理结束的标志是空字符还是换行符,二是循环处理字符时,循环次数是字符数组的容量大小还是实际输入字符的个数。举例: 键盘输入一行字符,统计大写字符的个数。本例可用两种方法编程,第一种方法的代码如下:#include int main(){char c; int n = 0;while((

2015-09-23 15:14:57 385

原创 字符串处理的例子

例1.统计字符串中的单词次数:#include #include #include int main() { int i; int word=0; int num=0; char str[100]; char c; printf("please enter sentanses: ");

2015-09-21 21:34:35 377

原创 vim的使用--复制剪切粘贴

1.复制:首先,可以在命令模式下输入v进入自由选取模式,选择需要剪切的文字后,按下d就可以进行剪切了。其他命令模式下剪切命令:yy:复制当前行nyy:n表示大于1的数字,复制n行yw:从光标处复制至一个单子/单词的末尾,包括空格ye:从光标处复制至一个单子/单词的末尾,不包括空格y$:从当前光标复制到行末y0:从当前光标位置(不包括光标位置)复制之行首y3l:从

2015-09-21 20:33:26 624

转载 gets函数哈scanf函数的区别

scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别。若想从键盘上输入字符串"hi hello",则应该使用__gets__函数。gets可以接收空格;而scanf遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格。char string[15]; gets(string); /*遇到回车认为输入结束*/scanf("%s",string); /*遇到

2015-09-21 15:41:09 347

转载 Sublime Text2.0.2注册码

Sublime Text2.0.2注册码 - Aries‘s的部落  2013-09-26 17:09:30|  分类: IT新闻|举报|字号 订阅Sublime Text2.0.2注册码 直接输入注册码就可以了----- BEGIN LICENSE -----Andrew WeberSingle User LicenseEA7E-85560

2015-09-18 13:05:40 442

转载 C语言实现封装、继承和多态

转载自董的博客,本文链接地址: http://dongxicheng.org/cpp/ooc/1、  概述C语言是一种面向过程的程序设计语言,而C++是在C语言基础上衍生来了的面向对象的语言,实际上,很多C++实现的底层是用C语言实现的,如在Visual C++中的Interface其实就是struct,查找Interface的定义,你可以发现有这样的宏定义:#if

2015-09-17 20:06:00 415

原创 Linux 网络编程之tcp/ip

一、

2015-09-16 21:14:03 358

原创 Linux网络编程基础

一、TCP/IP结构:二、字节序1、 #include 主机字节序转换为网络字节序:       uint32_t htonl(uint32_t hostlong);//把主机长整形数转换为网络的长整形数       uint16_t htons(uint16_t hostshort);网络字节序转换为主机字节序:       uint32_t ntohl(

2015-09-16 17:32:24 434

转载 signal函数

typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler);此处由于加了typedef自定义了一个新类型sighandler_t,所以第二行的函数原型看起来顺眼多了,形式跟int func(char c, int i)无异,但是如果看不懂typedef语句,这两句话仍然是噩梦

2015-09-14 17:42:16 314

原创 Linux进程间的通信

一、无名管道Pipe示意图:管道就相当于队列的数据结构;管道只适合半双工的通信方式;只能用于具有亲缘关系的进程间通信;

2015-09-14 14:02:41 699 1

原创 Linux进程

1.pid_t  getpid(void)功能:获取当前进程的ID;2.pid_t  getppid(void)功能:获取当前进程的父进程的ID;3.pid_t  fork(void)返回值:-1     创建进程失败;并且记录到errno;0       子进程的返回值子进程的ID     父进程得到子进程作为返回值;说明:fork是完全copy了一份父进程的

2015-09-13 21:48:35 309

原创 Linux线程

1.建立线程:int pthread_create(pthread_t *thread, const pthread_attr_t *attr,                          void *(*start_routine) (void *), void *arg);用法:#include      功能:创建线程(实际上就是确定调用该线程函数的入口点),在线程创建

2015-09-13 10:36:36 257

转载 C语言之单链表应用举例

在这里列举了一个应用单链表基本算法的综合程序,双向链表和循环链表的综合程序大家可以自己去试一试。#include #include #include #define N 10typedef struct node{char name[20];struct node *link;}stud;stud * creat(int n){stud *p,*h,

2015-09-10 20:08:24 834

转载 C语言之双向链表之操作

双向链表的基本运算:1、查找假若我们要在一个带表头的双向循环链表中查找数据域为一特定值的某个结点时,我们同样从表头结点往后依次比较各结点数据域的值,若正是该特定值,则返回指向结点的指针,否则继续往后查,直到表尾。下例就是应用双向循环链表查找算法的一个程序。#include #include #define N 10typedef struct node{char

2015-09-10 20:07:32 545

转载 C语言之循环链表

一、循环链表循环链表是与单链表一样,是一种链式的存储结构,所不同的是,循环链表的最后一个结点的指针是指向该循环链表的第一个结点或者表头结点,从而构成一个环形的链。循环链表的运算与单链表的运算基本一致。所不同的有以下几点:1、在建立一个循环链表时,必须使其最后一个结点的指针指向表头结点,而不是象单链表那样置为NULL。此种情况还使用于在最后一个结点后插入一个新的结点。 2、在判断是否

2015-09-10 20:04:20 683

转载 C语言操作之单链表操作之删除

3、删除假如我们已经知道了要删除的结点p的位置,那么要删除p结点时只要令p结点的前驱结点的链域由存储p结点的地址该为存储p的后继结点的地址,并回收p结点即可。以下便是应用删除算法的实例:#include #include #include #define N 10typedef struct node{char name[20];struct node *l

2015-09-10 20:03:16 835

转载 C语言之单链表操作之插入

2、插入(后插)假设在一个单链表中存在2个连续结点p、q(其中p为q的直接前驱),若我们需要在p、q之间插入一个新结点s,那么我们必须先为s分配空间并赋值,然后使p的链域存储s的地址,s的链域存储q的地址即可。(p->link=s;s->link=q),这样就完成了插入操作。下例是应用插入算法的一个例子:#include #include #include #define

2015-09-10 20:02:03 3154 1

转载 C语言之单链表操作之查找

二、单链表的基本运算建立了一个单链表之后,如果要进行一些如插入、删除等操作该怎么办?所以还须掌握一些单链表的基本算法,来实现这些操作。单链表的基本运算包括:查找、插入和删除。下面我们就一一介绍这三种基本运算的算法,并结合我们建立单链表的例子写出相应的程序。1、查找对单链表进行查找的思路为:对单链表的结点依次扫描,检测其数据域是否是我们所要查好的值,若是返回该结点的指针,否则返回NULL

2015-09-10 20:00:18 2039

转载 c语言之建立单链表

一、单链表的建立有了动态内存分配的基础,要实现链表就不难了。所谓链表,就是用一组任意的存储单元存储线性表元素的一种数据结构。链表又分为单链表、双向链表和循环链表等。我们先讲讲单链表。所谓单链表,是指数据接点是单向排列的。一个单链表结点,其结构类型分为两部分:1、数据域:用来存储本身数据2、链域或称为指针域:用来存储下一个结点地址或者说指向其直接后继的指针。例:typ

2015-09-10 19:58:35 462

转载 C语言之动态内存分配

准备:动态内存分配一、为什么用动态内存分配但我们未学习链表的时候,如果要存储数量比较多的同类型或同结构的数据的时候,总是使用一个数组。比如说我们要存储一个班级学生的某科分数,总是定义一个float型(存在0.5分)数组:float score[30];但是,在使用数组的时候,总有一个问题困扰着我们:数组应该有多大?在很多的情况下,你并不能确定要使用多大的数组,比如上例,你可能并

2015-09-10 19:54:23 446

转载 数据结构之图的遍历

二、图的遍历给定一个无向连通图,从图的任意指定顶点出发,依照某种规则去访问图中所有顶点,且每个顶点仅被访问一次,这一访问过程叫作图的遍历(graph traversal)数的遍历是利用树求解各类问题的基础,是树的一个最基本的运算。同样,图的遍历算法是求解图的连通性、拓扑排序和求关键路径等算法的基础。图的遍历比树的遍历复杂,由于图的任一点都有可能和其余个顶点相邻接,故在访问了某个顶点之后,沿

2015-09-09 23:44:21 1346

转载 数据结构之图

一、图的基本概念1、图的定义图是一种数据结构,图和树一样可以用二元组表示。它可定义为Graph=(V,R)其中,V={x|x∈datatype},R={VR},VR={|P(x,y)∧(x,y∈V)}。在图中,数据元素常称为顶点(Vertex),V是顶点的非空有穷集合;R是边(弧)的有穷集合。VR是两个顶点之间的关系集合。顶点之间关系可用序偶对来表示。若∈VR,则〈x,y>表示从x

2015-09-09 23:42:52 448

转载 数据结构之树的应用

六、树的应用1、利用树型结构求解集合的幂求集合{1,2,…,n}的幂集问题是一个经典的问题。解决这个问题的最典型做法就是递归调用。利用树型结构这个参照系来设计求集合{1,2,…,n}的幂集算法,对于给定的集合{1,2,3,4},按幂集集合中的元素个数和字典次序建立的树如下:                     {}{1}                     

2015-09-09 23:39:37 1239

转载 数据结构之哈夫曼树

五、哈夫曼树1、哈夫曼树哈夫曼(Huffma)树又称最优二叉树。它是n个带权叶子结点构成的所有二叉树中,带权路径长度WTL最小的二叉树。因为构造这种树的算法是最早由哈夫曼于1952年提出的,所以被称为哈夫曼树,相应的算法称为哈夫曼算法。从树中某一结点到另一个节点所经过的分支构成这两个节点之间的路径。路径的分支数目叫做这两个节点之间的路径长度。树的路径长度是从树根到树

2015-09-09 23:38:27 807

转载 数据结构之线索二叉树

四、线索二叉树遍历二叉树是以一定的规则将二叉树中的结点排列成一个线性序列,即二叉树的先序序列、中序序列或后序序列,在这些线性序列中,每个结点仅有一个直接前驱和直接后继。以二叉链表作为存储结构时,只能得到结点左、右子树的信息,而不能直接得到结点在某一序列中的前驱和后继,这些信息只能在遍历的动态过程中才能得到。其实n个结点的二叉链表中必定存在n+1个空链域,因此可以利用这些空链域来存放结点的前

2015-09-09 23:36:48 921

转载 数据结构之树的遍历

三、遍历                              A                      B                C                  D      E          F     G                H   I/*树节点C语言描述*/#define  M  10typedef

2015-09-09 23:35:29 502

转载 数据结构之树

一、树的基本概念树型数据结构是一类重要的非线性数据结构,其中以树和二叉树最为常用。它描述了客观世界中事物之间的层次关系,树在计算机领域内也有广泛的应用,如在编译程序中,可用树表示源程序的语法结构。在数据库系统中的文件索引机构一般采用树来表示。(一)树的定义树(tree)是有n(n>=0)个结点组成的有限集合,该集合可用T来表示。当T非空时满足:1、有且仅有一个特定的结点称为根(ro

2015-09-09 23:27:05 480

汇编指令.chm

最方便的技术文档,最全的 汇编指令集合。

2015-11-01

空空如也

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

TA关注的人

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