
C/C++
newnewman80
这个作者很懒,什么都没留下…
展开
-
udp丢包问题
一、主要丢包原因1、接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失。对于这种情况可以修改接收端,将包接收后存入一个缓冲区,然后迅速返回继续recv。2、发送的包巨大丢包:虽然send方法会帮你做大包切割成小包发送的事情,但包太大也不行。例如超过50K的一个udp包,不切割直接通过...转载 2019-12-20 10:29:56 · 745 阅读 · 0 评论 -
static 作用和用法详细
1.先来介绍它的第一条也是最重要的一条:隐藏2. static的第二个作用是保持变量内容的持久3. static的第三个作用是默认初始化为0.其实全局变量也具备这一属性,因为全局变量也存储在静态数据区4. 用static声明的函数和变量小结转载 2011-03-24 10:34:00 · 1142 阅读 · 1 评论 -
C语言中的位域的使用
一、位域 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,答应在程序中按域名进行操作。 这样就可以把几个不同的对象用转载 2011-10-28 13:59:22 · 725 阅读 · 0 评论 -
open和fopen的区别:
open和fopen的区别:1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则转载 2011-11-02 14:17:05 · 646 阅读 · 0 评论 -
C 中常用到的宏
C 中常用到的宏有: 01: 防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H//头文件内容#endif02: 重新定义一些类型防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。typedef unsigned char boolean; /* Boolean value type. *转载 2011-11-22 10:24:40 · 940 阅读 · 0 评论 -
C语言宏定义技巧(常用宏定义)
1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。 typedef unsigned char boolean; /* Boolean value typ转载 2011-11-07 14:59:22 · 698 阅读 · 0 评论 -
你今天volatile了吗?--准确定位
相关教程: 【C++学习点滴】4月汇总:volatile,数组维度,const修饰符【C++学习点滴】4月汇总:volatile,数组维度,const修饰符泛型:volatile——多线程程序员最好的朋友volatile修正符及让你的编...泛型:volatile:多线程程序员最好的朋友,volatile修正符及让你的编...volatile——多线程程序员最好的朋转载 2011-11-10 09:39:21 · 686 阅读 · 0 评论 -
共用体结构体位域的应用
1)增加位域定义我们经常需要直接访问寄存器中的某个位域。C281x C/C++头文件及外设示例所涉及的位域结构体方法,为多数片上外设寄存器提供了位域定义。例如,可以为CPU 定时器(CPU-Timer)中的每个寄存器定义一个位域结构体类型。CPU 定时器(CPU-Timer)控制寄存器的位域定义如下所示:1. //************************************转载 2011-10-28 14:19:28 · 2296 阅读 · 0 评论 -
_FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程)
先看下简单的初始代码:注意其编译运行后的结果。root@xuanfei-desktop:~/cpropram/2# cat global.h //头文件#ifndef CLOBAL_H#define GLOBAL_H#include int funca(void);int funcb(void);#endifroot@xuanfei-desktop:~/cpro转载 2011-11-09 13:03:22 · 692 阅读 · 0 评论 -
sprintf用法简介
sprintf用法简介选自《优快云 社区电子杂志——C/C++杂志》在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参函数,定义如下:int s转载 2012-02-15 10:09:46 · 620 阅读 · 0 评论 -
gdb调试
相关博文:http://blog.youkuaiyun.com/haoel/article/details/2879一:列出文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标转载 2012-05-31 13:57:02 · 482 阅读 · 0 评论 -
sscanf用法
头文件 #include 定义函数 int sscanf (const char *str,const char * format,........); 函数说明 sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。转载 2012-06-01 14:19:19 · 714 阅读 · 0 评论 -
移位运算,移位操作应用
一、位运算应用口诀 清零取位要用与,某位置一可用或 若要取反和交换,轻轻松松用异或 二、移位运算 1、它们都是双目运算符,两个运算分量都是整形,结果也是整形。 2、" 3、">>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统,其值相当于除以2。 4、">>>转载 2012-10-24 09:47:09 · 7709 阅读 · 0 评论 -
vector 读写文件
最近在写node的addon,涉及到将vector写入文件并重新读取,包括字符串和自定义struct构成的vector。研究了各种方法,有蛮多坑,将用到的方法共享之,作为备忘,同时也希望对你有帮助。需要引入的头文件#include <iostream>#include <fstream>#include <iterator>#include ...转载 2019-07-03 13:34:25 · 5510 阅读 · 1 评论 -
返回数字中二进制位为'1'的个数
返回数字中二进制位为'1'的个数转载 2011-02-11 21:31:00 · 949 阅读 · 0 评论 -
struct
1. struct的巨大作用<br /> 面对一个人的大型C/C++程序时,只看其对struct的使用情况我们就可以对其编写者的编程经验进行评估。因为一个大型的C/C++程序,势必要涉及一些(甚至大量)进行数据组合的结构体,这些结构体可以将原本意义属于一个整体的数据组合在一起。从某种程度上来说,会不会用struct,怎样用struct是区别一个开发人员是否具备丰富开发经历的标志。<br /><br /> 在网络协议、通信控制、嵌入式系统的C/C++编程中,我们经常要传送的不是简单的字节流(char型数组转载 2011-02-24 16:59:00 · 1506 阅读 · 0 评论 -
约瑟夫环(C语言单项循环链表)
约瑟夫环(C语言单项循环链表)约瑟夫环 问题描述:约瑟夫问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。转载 2010-11-05 11:52:00 · 41835 阅读 · 1 评论 -
structure union 主要区别
<br />Structure 与 Union主要有以下区别: <br /><br /> 1. struct和union都是由多个不同的数据类型成员组成, 但在任何同一时刻, union中只存放了一个被选中的成员, 而struct的所有成员都存在。在struct中,各成员都占有自己的内存空间,它们是同时存在的。一个struct变量的总长度等于所有成员长度之和。在Union中,所有成员不能同时占用它的内存空间,它们不能同时存在。Union变量的长度等于最长的成员的长度。 <br /><br />转载 2010-07-01 15:44:00 · 1159 阅读 · 0 评论 -
链表
<br />#include<iostream.h><br />struct student<br />{<br /> int age;<br /> float score;<br /> student* next;<br />};<br />struct student *Create()<br />{<br /> struct student *head,*p1,*p2;<br /> int n=0;<br /> p1=p2=new student;<br /> cout<<"age and score转载 2010-07-12 10:37:00 · 551 阅读 · 0 评论 -
快速排序算法 C
<br />#include <stdlib.h><br />#define MAX 20<br />void q_sort(char *string,int left,int right)<br />{<br /> char partition;<br /> char temp;<br /> int i,j,k;<br /> if(left<right)<br /> {<br /> i = left;<br /> j = right + 1;<br /> partition = string[lef转载 2010-07-12 09:38:00 · 526 阅读 · 0 评论 -
C语言---整型字符串转换
C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。以下是用itoa()函数将整数转 换为字符串的一个例子: # include # include void main (void) { int num = 100; char str[25]; itoa(num, str, 10); printf("The number ’num’ is %d and the string ’str’ is %s. /n" , n转载 2010-07-19 09:47:00 · 49823 阅读 · 1 评论 -
函数指针和指针函数
<br />指针函数<br />函数不但可以返回数值型数据而且还可以返回指针值,能够返回指针值的函数叫指针函数。<br />指针函数定义格式如下:<br /> <br />(1)定义指针函数时,函数名前必须有*。<br />(2)返回的是一个指针值,而不是一个数值型数据。<br />例该函数是截去参数字符串的尾部空格,并以字符指针的形式返回该字符串。1 #include <string.h><br />2 #include <stdio.h><br />3 char *trim(char转载 2010-07-19 19:25:00 · 1102 阅读 · 0 评论 -
typedef
<br /> <br />摘要 typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。<br /><br />第一、四个用途<br />用途一:<br />定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:<br />char* pa, pb; // 这多数不符合我们的意图,它只声转载 2010-07-26 15:31:00 · 664 阅读 · 0 评论 -
循环链表
<br />循环链表:<br /> <br />#include<stdlib.h><br /> <br />struct clist<br />{<br /> int data;<br /> struct clist *next;<br />};<br />typedef struct clist cnode: //循环链表新类型<br />typedef cnode *clink; //循环链表指针新类型<br /> <br />clink createcli转载 2010-07-29 11:58:00 · 584 阅读 · 0 评论 -
双向链表
<br />#include<stdlib.h><br />struct dlist<br />{<br /> int data;<br /> struct dlist *front; //指向下一结点的指针<br /> struct dlist *back; //指向前一结点的指针<br />};<br />typedef struct dlist dnode: //链表新类型<br />typedef dnode *dlink; //链表指针新类型<br />dlin转载 2010-08-09 12:01:00 · 483 阅读 · 0 评论 -
time() srand() rand()
<br />time()<br />返回系统当前时间,从1970年1月1日0时0分算起<br />如: temptime=time(NULL); // 可以写成 time(&temptime)<br />常用于随机数产生作为种子<br />如: srand((usigned) time(NULL));<br />又如:srand(time(&temptime) %60); <br /> t = rand() % 52 //随机取0-52之间数<br />原创 2010-08-13 10:13:00 · 1020 阅读 · 0 评论 -
C语言排序算法
(1)“冒泡法” 冒泡法大家都较熟悉。其原理为从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换它们,一直比较到a[n]。同理对a[1],a[2],...a[n-1]处理,即完成排序。下面列出其代码: void bubble(int *a,int n) /*定义两个参数:数组首地址与数组大小*/ { int i,j,temp; for(i=0;ifor(j=i+1;jif(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; }(2)“选择法” 选择转载 2010-06-25 16:38:00 · 1001 阅读 · 2 评论 -
链表倒置
<br />#include<stdio.h><br />#include<stdlib.h><br />int m;<br />typedef struct LNode{<br /> int data;<br /> struct LNode *next;<br />}LNode,*LinkList;<br />LNode *L,*p,*first;<br />void CreatList_L(LinkList L,int n){<br /> int i;<br /> L=(LinkList)malloc(转载 2010-08-13 16:19:00 · 547 阅读 · 0 评论 -
数据结构--栈的操作
<br />#include <stdio.h><br />#include <stdlib.h><br />#define Maxsize 100 /*设顺序表的最大长度为100,可依具体情况分配空间*/<br />//#define NULL -1<br />typedef int datatype;<br />typedef struct<br />{<br /> datatype stack[Maxsize];<br /> int top;/*栈顶指针*/<br />}Seq原创 2010-10-08 17:22:00 · 636 阅读 · 0 评论 -
extern 的用法
<br />1 基本解释<br /><br />extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。<br /><br /> 另外,extern也可用来进行链接指定。<br />2 问题:extern 变量<br /><br /> 在一个源文件里定义了一个数组:char a[6];<br /> 在另外一个文件里用下列语句进行了声明:extern char *a;<br /> 请问,这样可以吗?<br /><br /> 答案与转载 2010-07-01 10:00:00 · 467 阅读 · 0 评论