自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 用tcp协议创建一个服务器

#include #include #include #include #include #include #define PORT 9999int main(){ //1、创建socket int listen_socket = socket(AF_INET, SOCK_STREAM, 0); if (listen_socket == -1) { perro

2017-08-15 20:21:47 423

原创 单链表知识汇总

1.从尾到头打印单链表void RPrintList(pList plist);//从尾到头打印链表(不改变链表)11从尾到头打印单链表,而不能改变链表本身,可以用递归很好的实现void RPrintList(pList plist){ if (plist == NULL) { return; } else if (plist->n

2017-08-14 19:56:27 410

原创 售票系统

#include #include #include #include #include #include typedef struct _shm{ int flag; int ticket;}SHM;void sellTicket(SHM* pshm){ while (1) { int time = rand() % 10 + 1; usleep(t

2017-08-14 18:46:20 467

原创 典型例题

float a = 1.0f;    cout     cout     cout     cout   输出如下:1001FFBC01065353216falsefloat b = 0.0f; cout 输出如下:0001FFBB40true因为float 类型的1和0以整数类型存放存放内存数据是不一样的!float    0

2017-08-11 19:12:53 249

原创 文件操作二

#include #define SIZE 1024int main(){ FILE *fp = fopen("1.ppt", "ab+");if (fp == NULL){perror ("fopen");return -1;}FILE *fp1 = fopen("2.ppt", "ab+");if (fp1 == NULL){

2017-08-09 20:03:55 268

原创 linux中的文件操作代码一

fopen():#include int main(){    FILE *fp = fopen ("abc","ab+");//ab+加入b字符告诉函数库打开的文件为二进制文件而非纯文本文件!    if (fp == NULL)    {        perror ("fopen");        return -1;    }  

2017-08-09 19:39:47 346

原创 程序:计算1!+2!+3!+4!+.....+n!

#include int main(){    int i;    int sum = 0;    int tmp = 1;    for (i = 0; i     {        tmp = tmp * i;        sum = sum + tmp;    }    printf ("%d\n",sum);       ret

2017-07-21 09:48:41 3833

原创 关于字符串长度、字符串逆序的相关程序

#include 求字符串的长度:int main(){    char str[100] = "hello world!";    int len = 0;    int i;    for (i = 0; i     {        if (str[i] != '\0') // 只要字符串str[i] != '\0' ,len就+1;   

2017-07-20 20:50:22 300

原创 数组逆序

第一种方法#include #define N 10int main (){    int a[N] = {0,1,2,3,4,5,6,7,8,9};    int i;    int tmp;    for ( i = 0; i     {        tmp = a[i];        a[i] = a[N - i - 1];    // N -

2017-07-20 20:03:51 502

原创 编写一个可以测出电脑是大端模式还是小端模式

#include  // 小端返回真 (1)  大端返回假 (0)int  isLittleEndian(){    union     {        int a;        char ch;    } a;    a.a = 1;    //二进制=:0000 0001    return (a.ch == 1)}i

2017-07-20 19:29:27 552

原创 十进制转换各个进制(< 10)

#include #define BASE X   // (X 代表想转换的进制)// 十进制与多进制的转换int main (){    int a;    printf ("请输入一个数字:\n");    scanf ("%d",&a);    int s[10] = {0};    int i = 0;    while(a )    {

2017-07-19 11:31:48 317

原创 斐波那契函数的实现

#include // 斐波那契函数 // X  0 1  2 3 4 5 6 // Y  0 1  1 2 3 5 8  Y(5) = Y(3) + Y(4)/* int func(int n){    if ( n == 1)    {        return 1;    }    int res = n * func(n -1);    ret

2017-07-19 11:02:06 459

转载 关于字节对齐的理解

结构体对齐      有的时候,在脑海中停顿了很久的“显而易见”的东西,其实根本上就是错误的。就拿下面的问题来看:      struct T      {      char ch;      int i ;      };      使用sizeof(T),将得到什么样的答案呢?要是以前,想都不用想,在32位机中,int是4个字节,char是1个字节,所以T一共

2017-07-10 19:50:44 600

转载 只在堆上或是栈上分配对象的方法:

那么如何限制类对象只能在堆或者栈上建立呢?下面分别进行讨论。1、只能在堆上分配类对象,就是不能静态建立类对象,即不能直接调用类的构造函数。容易想到将构造函数设为私有。在构造函数私有之后,无法在类外部调用构造函数来构造类对象,只能使用new运算符来建立对象。然而,前面已经说过,new运算符的执行过程分为两步,C++提供new运算符的重载,其实是只允许重载operator new()函

2017-06-22 15:59:02 681

原创 TCP循环服务器 代码tcpser

#include  #include  #include  #include  #include  #include  #include  #include  #define PORT  1234int main(){int sockfd, newfd;struct sockaddr_in  serv_addr;struct sockad

2016-12-26 22:21:57 480

原创 tcp_client

#include  #include  #include  #include  #include  #include  #include  #include  #define portnumber 3333int main(int argc, char *argv[]) { int sockfd; char buffer[1024];

2016-12-26 22:20:41 417

转载 合并两个链表成一个升序链表

LinkList mergeLinkedlist(LinkList &L1,LinkList &L2)  {      LinkList a=NULL;      LinkList b=NULL;      LinkList c=NULL;      LinkList L;        GreatList(L);                            

2016-12-13 22:12:15 645

原创 退出 、 等待

wait作用:等待子进程中断或者是结束原型:pid_t  wait   (int  *   status)说明:暂停目前进程直到信号来或是进程结束。若调用wait时已经结束会立即返回。返回值:成功返回子进程pid号,出错    -1;头文件:#include       #include wait   pid功能:等待子进程结束或是中断;原型:p

2016-12-12 22:28:10 323

原创 进程的创建、运行、退出

创建: fork: 作用:创建一个进程原型:pid_t、fork(void)返回值: 出错=0    子进程>0 父进程子进程的数据堆栈空间都是从父进程拷贝过来的。vfork作用:建立一个新的进程原型:pid_t    vfork返回值: 出错=0子进程>父进程头文件:#include fork    与    v

2016-12-11 22:45:09 379

转载 单链表倒序

需要将单链表倒序,并输出新的链表核心代码Node *next = root->next;root->next = new_root;new_root = root;root = next;[cpp] view plain copy print?#include     typedef

2016-12-10 21:59:55 316

转载 大话数据结构8之栈和队列2

栈的应用--四则运算表达式求值  后缀(逆波兰)表示法定义:不需要括号的后缀表达式。例:9+(3-1)*3+10/2,后缀表达式为9 3 1 - 3 * + 10 2 / +,所有的符号都是在要运算的数字后面出现  后缀表达式计算结果:还是上例  初始化一个空栈,此栈用于对要运算的数字进出使用;  后缀表达式中的前三个都是数字,所以把运算符前面的数值依次进栈:9、3

2016-11-29 22:44:35 245

原创 链表

单链表的插入:假设存储元素e的结点为s,要实现p、p->next和s直间逻辑关系的变化,只需要将s插入到p和p->next之间即可。也就是说,让p的后继结点称为s的后继结点,s变成p的后继结点,如下图:这个操作的代码只需要两行:[cpp] view plain copy s->next = p->next;  p->nex

2016-11-28 22:46:28 286

原创 链表插入删除

2016-11-27 22:15:44 251

原创 比较两个分数的大小

比较两个分数的大小,主要的思想是输入的两个分数当分母不相同时,先通分,换算成相同的分母后,然后在相互比较分子的大小,如果分母相同时,直接比较两个分子的大小实例代码:[html] view plain copy /****************************************************

2016-11-26 22:07:19 728

转载 链表

#include "stdafx.h"#include "stdio.h"#include #include "string.h" typedef int elemType ; /************************************************************************//* 以下是关于线性表链接存储(单

2016-11-24 22:11:28 288

转载 typedef与define的区别

Typedef和define都可以用来给对象取一个别名,但是两者却有着很大不同。1. 首先,二者执行时间不同关键字typedef在编译阶段有效,由于是在编译阶段,因此typedef有类型检查的功能。Define则是宏定义,发生在预处理阶段,也就是编译之前,它只进行简单而机械的字符串替换,而不进行任何检查。 #define用法例子:#define f(

2016-11-23 22:02:06 252

转载 嵌入式调试器GDB简单功能介绍

GNU开发了GDB调试器,虽然GDB没有图形调试界面,但对于从事嵌入式Linux应用开发的人员还是有必要知道GDB的使用方法的。一般来说,GDB主要帮助你完成下面四个方面的功能:1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)3、当程序被停住时,可以检查此时你的程序中所发生的事。4、你可

2016-11-22 22:17:26 342

原创 C语言:关键字

1、static(保存在全局数据区)1)、延长局部变量生命周期:static 只执行一次。2)、修饰全局变量,只能在本文件中使用,其他文件不能访问。3)、修饰函数:一个函数被static修饰,只能在本文件中调用,不能在其他文件中使用。2、extern:(声明变量)外部声明作用:声明这个变量在其他文件想在一个文件中使用另一个文件中变量?在当前  .c 中外部声明。3、

2016-11-21 21:41:51 260

原创 嵌入式课堂笔记

1、通过函数名找到函数的入口地址。2、给形参分配空间。3、传值:把实参变量对应的内存空间的值,传递给形参变量的对应空间。{当只读(只使用不修改)实参变量的值时,传实参变量变量名当写(即使用又修改)实参变量对应内存空间的地址}4、执行函数体语句。5、函数返回并释放内存空间;6、函数接口:函数原型、函数使用文档、函数接口的重要性。7、共用体的特点:共同使用一段空间容易产

2016-11-20 22:22:09 334

转载 scanf,gets,getchar,fgets中的一些细节

1.getchar int getchar ( void ); Get character from stdin Returns the next character from the standard input (stdin). It is equivalent to calling getc with stdin as ar

2016-11-19 22:09:05 304

原创 typedef与#define

typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间#define为一宏定义语句,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善、背后一长串”的宏,它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了,但也因此难以发现潜在的错误及其它代码维护问题. 区别的话,#是宏,处理的时候位于

2016-11-18 21:59:29 218

原创 数组与指针

一、指针1、对应的内存的空间:    num ++;2、指针的步长:    整形:4个   字符1个;3、(*P)++:找到p变量里保存的地址对应的内存空间:4、指向内存空间:p++:对p对应的内存空间的值+1;(*p)++:对p指向的内存空间的值+1;p对应的指向空间地址.*p对应指向空间的值:num  == *p;&num == p;

2016-11-17 22:13:41 214

转载 malloc,realloc,calloc的介绍与区别

一.首先我们先大体介绍下 malloc ralloc calloc1.malloc          void* malloc(size_t size );分配size个字节的未初始化的存储空间。如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。函数返回的指针一定

2016-11-15 22:24:46 316

转载 uC/OS - 2操作系统的简单概念

uC/OS - 2操作系统的简单概念实时系统:指逻辑和时序出现偏差将会引起严重后果的系统。前台程序:一般指死循环中的程序。后台程序:中断程序。临界代码段:代码的临界段也称为临界区,指处理时补课分割的代码。任务切换:1.保存任务1的工作状态。2.载入任务2的工作状态。3.跳转到任务2的地址空间工作。内核:多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,

2016-11-13 22:55:10 689

原创 动态库 静态库

一、动态库:gcc -shared - fPIC -o libadd.so add.c sub.c mul.c  div.cgcc main.c二、静态库:gcc -c add.c sub.c mul.c div.car rcs libadd.a add.ogcc main .c -ladd -L -o main./main

2016-11-10 21:58:43 233

原创 课堂笔记

一、什么是声明?什么是定义?它们有什么区别?什么是定义:所谓的定义就是(编译器)创建一个对象,为这个对象分配一块内存并给它取上名字,这个名字就是我们经常所说的变量名或对象名。但是注意,这个名字一旦和这块内存匹配起来(可以想象是这个名字嫁给了这块空间),它们就同生共死、终身不离不弃,并且这块内存的位置也不能被改变。一个变量或对象 在一定的区域内(如函数、全局等)只能被定义一次,如果定义多

2016-11-09 22:00:12 248

转载 C语言中函数strlen等的实现

#include //#include #define MAX_SIZE 1024/*把值定义在外面容易修改*/int my_strlen(char *str){    int len = 0;    while(*str != '\0')    {        len++;str++;    }    return len;}ch

2016-11-08 22:07:55 282

原创 嵌入式课堂笔记

一、变量与常量;1、变量三大特点:  (1)、变量的数据类型:主要说明变量占用内存空间大小。(2)、变量的作用域:变量有效性的范围,即变量的使用范围。(3)、储存类型:变量内存的存储方式不同地存储方式影响变量在内存周期。2、scanf与gets的区别:scanf不能捕获一个句子。gets可以捕获句子。3、算术运算符:+; -;  * ; /   ; %; ++  ;--;

2016-11-07 21:25:57 288

原创 嵌入式课堂笔记

一:数据类型1、strlen:测量一个字符串有多少字符;  不统计\0;printf ("strlen (str)=%d\n",strlen (src));2、整数原码=补码      负数补码=原码取反+13、bit; 字节=(8bit);   半字=(2个字节=16bit);字=4个字节=32bit4、sizeof (num);测量一个变量字节长度(所占空间大小)5、特

2016-11-05 22:35:36 386

转载 linux 课堂作业

linux下文件拷贝代码#include #include #include #include #include #include #define BUFF_SIZE 1024int main(int argc,char *argv[]){    int from_fp;    int to_fp;    char b

2016-11-02 21:55:51 246

空空如也

空空如也

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

TA关注的人

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