- 博客(16)
- 资源 (1)
- 收藏
- 关注
原创 事件过滤方法
方法一:定时器思想:在定时器初始运行时不设定时间,当发生某一事件时触发定时器,设置其多长时间后运行定时器函数且只运行一次,在频繁发生某一事件时重置定时器,会过滤掉时间间隔小于我们所设定值的事件,且能保证最后一次事件被执行简单代码说明:代码请参考本人的另一篇博文定时器中的内容说明:该方法确保最后一次事件能够执行方法二:应用两次事件发生时的时间差
2016-11-17 16:06:14 599
转载 常见排序算法
目录前言冒泡排序选择排序插入排序快速排序归并排序堆排序希尔排序基数排序参考资料前言排序算法在笔试面试中几乎是必考的,因为它是很多复杂算法的基础,也是我们学习数据结构与算法的入门知识。目前网上介绍各类排序算法的博客和帖子非常多,但其中有不少作者提供的代码有错误或者代码中没有考虑特殊情况。在此,我们再次总结一下常见的八大排序算法,
2016-11-14 15:39:49 372
转载 嵌入式学习网站
.C语言中文网 http://see.xidian.edu.cn/cpp/ .中国IT实验室 http://c.chinaitlab.com/c/Index.html .站长之家 http://www.zzzj.com/html/cjj/ .编程学吧 http://www.bcx8.com/ .6lic.com电子在线 http://www.61ic.com/n
2016-11-11 09:30:27 3515
转载 二维数组作为参数传递问题
int a[2][2]={ {4, 6}, {9, 11} };我定义了这样一个数组,我想把这个数组作为参数,传递到一个函数中,并要在函数中能引用该二维数组的元素,我该怎么做? 第一种方式是直接传递二维数组,但是必须标明第二维的值,因为如果只是传递a[][],编译器无法分配这样的数组,所以要这样传int a[][3]第二种方法是传递指针数组方式,即int (*a)[
2016-11-10 16:47:05 634
原创 程序的处理步骤-------预处理、编译、链接、运行
1、预处理阶段宏、文件包含、条件编译2、编译阶段编译时是进行语法检查、函数分配空间,将各个函数编译成二进制码,按照特定目标文件格式生成目标文件3、链接阶段将多个源文件编译生成的目标程序连接起来,同时与系统提供的资源连接成为一个整体,从而生成一个可执行程序4、运行阶段执行连接好的程序
2016-11-09 10:22:26 711
翻译 const与#define的区别
1、编译器处理方式不同define宏是在预处理阶段展开const常量是编译运行阶段使用2、类型和安全检查不同define宏没有类型,不做任何类型检查,仅仅是展开const常量有具体的类型,在编译阶段会执行类型检查3、存储方式不同define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存const常量会在内存中分配4、const可
2016-11-09 10:09:37 457
转载 static关键字的作用
1、在函数体内一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)2、在模块内,但是在函数体外一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外其它函数访问,它是一个本地的全局变量3、在模块内声明函数在模块内,一个被声明为静态的函数只可被这一模块内的其他函数调用4、修饰类的成员变量在类中的static成员变量意味着它为该类的所有
2016-11-09 09:53:51 249
原创 const的作用
1、const修饰参数1)如果输入参数是指针型的,用const修饰可以防止指针被意外修改2)如果参数采用传值的方式,无需const,因为函数自动产生临时变量复制该参数3)非内部数据类型的参数,需要临时对象复制参数,而临时对象比较复杂,建议用前加const的引用方式传递非内部数据2、const 修饰函数返回值1)函数返回const指针,表示该指针不能被修改,只能把该指针赋给con
2016-11-08 18:03:25 236
原创 linux下通过宏进行打印
1、形式一#ifdef DEBUG#define MY_DEBUG(...) fprintf(stderr, __VA_ARGS__)#else#defineMY_DEBUG(...) printf(__VA_ARGS__)#endif实例: 调用:MY_DEBUG("Howdy"); //_ _VA_ARGS_ _扩展
2016-11-04 11:02:25 615 1
原创 linux下打印带颜色的字符
前不久就在某位同学的博客里看到,但是今天找了好久没找到,就直接google了,现贴出来跟大家分享一下格式如下(双引号里面没有加任何额外字符,"字符串"为要打印的内容):printf("\033[字背景颜色;字体颜色m字符串\033[0m" );示例:printf("\033[40;37mhello world!\n\033[0m");40是字背景颜色, 37是字体的
2016-11-04 10:00:41 451
原创 linux下的定时器
1、创建定时器#include timer_t timerTid;struct itimerspec timerIt;int create_timer(){//printf("%s %d Test\n",__func__,__LINE__); int ret = -1; struct sigevent evp; memset(&evp,
2016-11-03 16:33:44 334
原创 段错误调试
1、GDB调试1)第一步是使用带有调试标志(debugging flags)的方式编译这段代码,如下:# gcc -g segfault.c2)运行可执行程序 $:gdb a.out //进入gdb模式 (gdb) run //运行程序 Starting program: /home/dgawd/cpsc/363/a.out
2016-11-03 15:38:21 215
原创 使用memwatch进行内存调试
1、memwatch介绍memwatch可以跟踪程序中的内存泄漏和错误,提供结果日志记录,能检测双重释放、错误释放、没有释放的内存、上溢和下溢等。2、使用memwatch步骤1)在代码中加入头文件memwatch.h2)程序的代码与memwatch.c一起编译、链接3)使用gcc编译器进行编译时要定义宏MEMWATCH、MEMWATCH_STDIO,即在编译程序时增加“
2016-11-03 14:59:47 549
原创 使用strace工具跟踪系统调用
1、strace 使用时无需重新编译程序,我们可以用来跟踪没有源代码的程序。使用strace工具来执行程序时,它会记录程序执行过程中调用的系统调用、接收到的信号。通过查看记录结果,可以知道程序打开了哪些文件、打开是否成功、对文件进行了哪些操作等。2、strace的用法在使用前确保已经移植了strace。直接运行strace可以看到它的用法及各个参数的作用usage: s
2016-11-03 11:07:59 605
原创 回调函数
回调函数就是一个通过函数指针调用的函数。当一个函数作为参数传递时,在另一个函数中可以通过形参的指针直接访问该函数。通过代码演示回调的使用以及回调函数的形参内容是如何传递的。#include #include typedef void (*callBack)(int *a,int *b); //通过宏定义函数指针void funcA(int
2016-11-03 10:52:38 348
原创 通过函数调用分配空间
在通过函数分配空间时参数需要设定为二级指针,才能使得在函数内部分配的空间能正确通过参数传回去以下是一个简单的测试程序#include #include void malloc_test(int **p){ *p = (int *)malloc(sizeof(int)); **p = 5; printf("**p va
2016-11-03 10:51:12 293
qtsoap.zip
2020-02-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人