位运算技巧

一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《编程之美》求“1的数目”时,我才开始觉得位运算是如此之美,后来读到 《Hacker's Deli...

2017-02-07 15:55:25

阅读数 264

评论数 0

动态申请二维数组

方法一:利用二级指针申请一个二维数组。 [objc] view plain copy  print? #include   #include         int main()   {       intint **a;  //用二级...

2017-01-08 19:44:36

阅读数 320

评论数 0

指定整数数组中输出和为一整数的所有组合

题目:编写一个函数,在数组a[10] = {1,3,5,7,9,11,13,15,17}中输出和为25的所有整数组合 思想:递归,探底一种情况后返回前一种状态。 代码: #include #include char a[10] = {1,3,5,7,9,11,13,15,17}...

2017-01-02 22:51:40

阅读数 306

评论数 0

实现strcpy得分点

一个标准的strcpy函数: 原本以为自己对strcpy还算比较了解,结果面试时还是悲剧了。 下面给出网上strcpy的得分版本: 2分 void strcpy( char *strDest, char *strSrc ) {   while( (*st...

2016-12-21 23:58:42

阅读数 231

评论数 0

int *ptr=(int *)(&a+1)

int *ptr=(int *)(&a+1)(面试题),有需要的朋友可以参考下。 【问题】:请写出以下程序的输出结果。 int main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); p...

2016-12-19 10:11:28

阅读数 365

评论数 0

带缓冲的I/O操作和不带缓冲的I/O操作

首先要明白不带缓冲的概念:所谓不带缓冲,并不是指内核不提供缓冲,而是只单纯的系统调用,不是函数库的调用。系统内核对磁盘的读写都会提供一个块缓冲(在有些地方也被称为内核高速缓存),当用write函数对其写数据时,直接调用系统调用,将数据写入到块缓冲进行排队,当块缓冲达到一定的量时,才会把数据写入磁盘...

2016-12-18 23:58:50

阅读数 551

评论数 0

安全的终止正在运行的线程

转自:[http://creator.cnblogs.com/] 最近开发一些东西,线程数非常之多,当用户输入Ctrl+C的情形下,默认的信号处理会把程序退出,这时有可能会有很多线程的资源没有得到很好的释放,造成了内存泄露等等诸如此类的问题,本文就是围绕着这么一个使用场景讨论如何...

2016-12-17 23:59:01

阅读数 264

评论数 0

TCP三次握手和四次挥手

TCP是什么? 具体的关于TCP是什么,我不打算详细的说了;当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续。它只是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功。首先来看看OSI的七层模型:我们需要知道TCP工作在网络OSI的七...

2016-12-15 00:04:20

阅读数 192

评论数 0

面试题

char *getmemory(void) { char p[] = “hello world”; return p; } void test(void) { char *str = NULL; str = getmemory(); printf(“%s\n”,str);    ...

2016-12-13 00:15:24

阅读数 148

评论数 0

Linux下的段错误分析

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

2016-12-11 23:55:28

阅读数 267

评论数 0

函数中返回字符串的方法

有四种方式: 1。使用堆空间,返回申请的堆地址,注意释放 2。函数参数传递指针,返回该指针 3。返回函数内定义的静态变量(共享) 4。返回全局变量   ******************以下摘自csdn*****************************...

2016-12-10 23:58:43

阅读数 168

评论数 0

字符串题目-strstr()

字符串函数strstr(char *s1,char *s2)是返回字符串s1中首次出现s2的地址 函数实现: char *my_strstr( char *s1, char *s2) { if(*s2 == '\0') { return NULL; } char *a = ...

2016-12-09 23:22:29

阅读数 249

评论数 0

费式数列

Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:「若有一只免子每个月生一只小免子,一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,二个月后有三只免子,三个月后有五只免子(小免子投入生产)......。  如果不太理解这个例子的话,举个图就知道了,注意新生的小...

2016-12-08 23:22:15

阅读数 302

评论数 0

作式堆分析和实现

介绍: 定义:      左式堆(Leftist Heaps)又称作最左堆、左倾堆,是计算机语言中较为常用的一个数据结构。左式堆作为堆的一种,保留了堆的一些属性。第1,左式堆仍然以二叉树的形式构建;第2,左式堆的任意结点的值比其子树任意结点值均小(最小堆的特性)。但...

2016-12-07 23:40:09

阅读数 339

评论数 0

二项队列分析及实现

定义:      二项队列不同于左式堆和二叉堆等优先队列的实现之处在于,一个二项队列不是一棵堆序的树,而是堆序树的集合,即森林。堆序树中的每棵树都是由约束形式的,叫做二项树。每一个高度上至多存在一棵二项树。高度为0的二项树是一颗单节点树,高度为k的二项树Bk通过将一棵二项树B...

2016-12-06 16:00:39

阅读数 790

评论数 1

函数变相做到返回多个值的方法

2方法1:利用全局变量        分析:全局变量作为C语言的一个知识点,虽然我们都了解它的特点,但在实际教学过程中应用得并不是很多。由于全局变量的作用域是从定义变量开始直到程序结束,而对于编写有多个返回值的C语言函数,我们可以考虑把要返回的多个值定义成全局变量。当函数被调用时,全局变量被更...

2016-12-05 23:25:01

阅读数 366

评论数 0

字符串逆序(多种解法)

普通逆序 基本上没有这么考的,放在这里主要是为了和后面的原地逆序做个对比。很简单,直接分配一个与原字符串等长的字符数组,然后反向拷贝一下即可。 char* Reverse(char* s) { //将q指向字符串最后一个字符 char* q = s ; while( *...

2016-12-04 23:39:03

阅读数 572

评论数 0

B-树详细分析及B树B-树B+树B*树概念

B- 树是为了磁盘或其它存储设备而设计的一种多叉(下面你会看到,相对于二叉,B树每个内结点有多个分支,即多叉)平衡查找树。 B- 树又叫平衡多路查找树。一棵m阶的B 树 (m叉树)的特性如下: 树中每个结点最多含有m个孩子(m>=2);除根结点和叶子结点外,其它每个结...

2016-12-03 11:04:57

阅读数 3689

评论数 1

AVL树介绍与实现

AVL树的介绍 AVL树是根据它的发明者G.M. Adelson-Velsky和E.M. Landis命名的。 它是最先发明的自平衡二叉查找树,也被称为高度平衡树。相比于"二叉查找树",它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 (关于树的高度等基本概念,请...

2016-12-02 22:51:01

阅读数 287

评论数 0

char a[](字符串数组)和char *a(字符串指针)区别

在C语言中,对字符串的操作主要有两种方式,一是使用字符数组,char str[];二是使用字符指针。那么二者有什么区别呢?下面将分述二者的使用,最后进行比较。 一、字符数组         使用char str[]定义一个字符数组str,中括号内可以写上数字表示数组大小,也...

2016-12-01 23:09:21

阅读数 2188

评论数 0

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