
C语言中的经典小程序
文章平均质量分 94
海边顽石
这个作者很懒,什么都没留下…
展开
-
C语言中的经典小程序2
5.不调用库函数,用C语言实现字符串复制(strcpy函数)。#include#includevoid my_strcpy(char *strdest, const char *strsrc);int main(void){ char src[32],dest[32]; printf("please input src_string:\原创 2013-09-05 23:27:41 · 472 阅读 · 0 评论 -
pthread_mutex_lock 函数
pthread_mutex_lockpthread_mutex_lock(pthread_mutex_t *mutex); int pthread_mutex_trylock(pthread_mutex_t *mutex); int pthread_mutex_unlock(pthread_mutex_t *mutex); 描述 pthread_mutex_lock(转载 2017-05-10 15:43:16 · 13913 阅读 · 0 评论 -
自旋锁(spinlock) 解释得经典,透彻
http://blog.youkuaiyun.com/unbutun/article/details/5730037自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。 由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。转载 2017-05-10 15:30:47 · 656 阅读 · 0 评论 -
自旋锁和互斥锁区别
POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(Critical Section)进行保护(另一种常用的同步机制是barrier)。Pthreads提供了多种锁机转载 2017-05-10 15:22:01 · 266 阅读 · 0 评论 -
pthread_exit()函数
void pthread_exit( void * value_ptr );线程的终止可以是调用了pthread_exit或者该线程的例程结束。也就是说,一个线程可以隐式的退出,也可以显式的调用pthread_exit函数来退出。pthread_exit函数唯一的参数value_ptr是函数的返回代码,只要pthread_join中的第二个参数value_ptr不是NULL,这个值将被传递给v转载 2017-05-10 15:13:49 · 58013 阅读 · 2 评论 -
pthread_join函数
函数pthread_join用来等待一个线程的结束,线程间同步的操作。头文件 : #include 函数定义: int pthread_join(pthread_t thread, void **retval);描述 :pthread_join()函数,以阻塞的方式等待thread指定的线程结束。当函数返回时,被等待线程的资源被收回。如果线程已经结束,那么该函数会立即返回。并且thread转载 2017-05-10 15:04:34 · 595 阅读 · 0 评论 -
线程同步
读写锁特点:1)多个读者可以同时进行读2)写者必须互斥(只允许一个写者写,也不能读者写者同时进行)3)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者) 互斥锁特点: 一次只能一个线程拥有互斥锁,其他线程只有等待线程同步:互斥量与读写锁的异同与性能分析线程同步简单的说就是当多个线程共享相同的内存时,当某个线程可以修改变量,而其他线转载 2017-05-10 11:49:41 · 269 阅读 · 0 评论 -
C语言typeof详解
前言: typeof关键字是C语言中的一个新扩展,这个特性在linux内核中应用非常广泛。一,说明 typeof的参数可以是两种形式:表达式或类型。 1,表达式的的例子: typeof(x[0](1) 这里假设x是一个函数指针数组,这样就可以得到这个函数返回值的类型了。 如果将typeof用于表达式,则转载 2017-04-07 11:39:33 · 3387 阅读 · 0 评论 -
结构体中定义函数指针
结构体中定义函数指针结构体指针变量的定义定义结构体变量的一般形式如下:形式1:先定义结构体类型,再定义变量struct 结构体标识符{ 成员变量列表;…};struct 结构体标识符 *指针变量名;变量初始化:struct 结构体标识符 变量名={初始化值1,初始化值2,…,初始化值n };形式2:在定义类型的同时定义变量struct 结构体标识符转载 2017-03-22 18:01:59 · 1103 阅读 · 0 评论 -
互斥锁mutex的使用方法
在线程实际运行过程中,我们经常需要多个线程保持同步。这时可以用互斥锁来完成任务;互斥锁的使用过程中,主要有pthread_mutex_init,pthread_mutex_destory,pthread_mutex_lock,pthread_mutex_unlock这几个函数以完成锁的初始化,锁的销毁,上锁和释放锁操作。一,锁的创建 锁可以被动态或静态创建,可以用宏PTHRE转载 2017-05-10 15:53:05 · 589 阅读 · 0 评论 -
gcc:预处理语句#if、#elif、#else、#endif等
【本文摘自】: 作者:清林,博客名:飞空静渡;#if语句#if语句会计算它后面的表达式,并检查表达式的结果,如果结果为真(true),就编译后面的语句,如果为假(false),就不编译后面的语句。例如: #if COUNT char *desc = "The count is non-zero"; #endif转载 2017-05-17 17:50:23 · 1511 阅读 · 0 评论 -
C语言中的经典小程序1
首先声明所写的这些函数都是本人自己实践过的,每一个程序都是能够实际运行的。1.将一个十进制的无符号整型数据转换成二进制形式表示,用C语言实现。我写了一个程序,经过运行能够实现:#includevoid funcint_to_ox(unsigned int a);int main(void){ unsigned int m; print原创 2013-09-05 23:23:04 · 602 阅读 · 0 评论 -
C语言中的经典小程序3
以下程序涉及单链表的建立、删除、添加、计算链表长度、排序和逆置:#include#includetypedef struct Node{int data;struct Node *next;}node; /*建立单链表*/node *creat(){ printf(">>>>>>>>>>>>>原创 2013-09-08 13:46:55 · 415 阅读 · 0 评论 -
C语言中的经典小程序4
1. 给出一个单链表,不知道节点个数N,怎样只遍历一次就可以求出中间节点。 这个问题的大体思路是:设立两个指针,比如*p和*q。p每次移动两个位置,即p = p->next->next; q每次移动一个位置,即q = q->next; 当p达到最后一个节点时,q就是中间节点了。 下面是可以实现的具体代码: #include#includet原创 2013-09-08 17:19:10 · 483 阅读 · 0 评论 -
C语言中的经典小程序5
9、循环链表约瑟夫问题,输入n,k,m(n代表总人数,k代表第一个喊数的人的标号,m代表喊到m的出局, 顺序输出出局人的标号。 这个经典的题,应该分三步解决: 一、建立一个具有N个节点、无头结点的循环链表。 二、确定第一个报数人的位置。 三、不断从链表中删除链表节点,直到链表为空。 下面是亲测代码,希望原创 2013-09-09 16:34:34 · 558 阅读 · 0 评论 -
C语言中的经典小程序6
10.从小到大输出10到100之间的素数。 一个简单的c入门级别的小程序,这个小程序的关键是好多人已经忘记什么是素数了! 素数:只能被1和其自身整除的自然数。 因此,判断素数,我们需要一个循环,从2到(自身-1),让该数尝试整除,如果整除,不是素数。 再来一个循环,从10到100,就可完成题目了。 程序如下: #i原创 2013-09-13 14:34:51 · 532 阅读 · 0 评论 -
C语言面试题大汇总之华为面试题
1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量?转载 2017-10-26 16:50:08 · 891 阅读 · 1 评论 -
typedef函数指针的用法
代码简化,促进跨平台开发的目的. typedef 行为有点像 #define 宏,用其实际类型替代同义字。 不同点:typedef 在编译时被解释,因此让编译器来应付超越预处理器能力的文本替换。用法一:typedefint(*MYFUN)(int,int);这种用法一般用在给函数定义别名的时候上面的例子定义MYFUN 是一个函数指针, 函数类型是带两个int 参数, 返回一转载 2017-10-24 17:09:02 · 351 阅读 · 0 评论 -
经典排序算法归纳笔记
转自:http://blog.chinaunix.net/uid-23069658-id-4221767.html常见的排序算法有选择排序、冒泡排序、插入排序、希尔排序、归并排序、堆排序、快速排序这些都是以前教科书上教给我们的。科技在发展,人类在进步,在前人们不懈努力下新的排序算法总是层出不穷,特别是大数据时代关于海量数据的处理方面显得尤为重要,所以出现了诸如计数排序(couting sort转载 2017-08-31 11:48:26 · 528 阅读 · 0 评论