
Linux C/C++
文章平均质量分 90
wynter_
做一个对得起自己的人。
展开
-
clang-format 备份
.clang-format 备份---# 语言: None, Cpp, Java, JavaScript, ObjC, Proto, TableGen, TextProtoLanguage: CppBasedOnStyle: Google# 访问说明符(public、private等)的偏移AccessModifierOffset: -4# 开括号(开圆括号、开尖括号、开方括号)后的...原创 2019-11-27 15:12:52 · 302 阅读 · 0 评论 -
C语言:函数参数传递的三种方式
原地址:http://c.biancheng.net/cpp/html/494.html一、三道考题开讲之前,我先请你做三道题目。(嘿嘿,得先把你的头脑搞昏才行……唉呀,谁扔我鸡蛋?)考题一,程序代码如下:void Exchg1(int x, int y){ int tmp; tmp = x; x = y; y = tmp; pr转载 2016-10-10 15:51:04 · 1288 阅读 · 0 评论 -
pow2gt函数
看一下下面的这个函数:int pow2gt(int x){ --x; x |= x>>1; x |= x>>2; x |= x>>4; x |= x>>8; x |= x>>16; return x+1;}乍眼一看,是将一个整型数后面的所有位置一然后在加一,有些人虽然看得懂这些语法,可能也不太明白这是啥意思。。。其实就是 返回比x大的最小的2的N次方数!原创 2016-10-12 13:55:53 · 1915 阅读 · 0 评论 -
C语言:回文数
回文数指的是正反序读起来都是一样的数字,比如121, 1234321, 2345432等等!那么,怎么用程序来判断一个数是不是回文数呢?最简单的一个办法就是将该数逆序,然后与其原数进行比较,相等则是回文数,反之,不是回文数;程序如下:#include int main(){ long int num = 123454321; int n = 0; n = huiwen(原创 2016-10-14 10:24:52 · 1466 阅读 · 1 评论 -
C语言:使用两个栈模拟一个队列
#include #include #define STACK_INIT_SIZE 100 //存储空间初始分配量#define STACKINCREMENT //存储空间分配增量typedef struct { int *base; //栈底 int *top; //栈顶 int stacksize;} stack;//构造一个空栈int init原创 2016-10-14 14:58:16 · 847 阅读 · 0 评论 -
打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 )
本程序可以完美输出,效果如下:相信你已经很期待代码实现了吧,其实代码真的不难,关键是思想。我说说我的想法吧,首先我构造了一个数组,保存了上面图片中字符一行的一半。聪明的你肯定看出来了,上面多数字符都是相同的,是的我只不过是一行一行的打印了这些重复的字符,当然是用下标访问那个数组了。我把上面图片看成上下对称,左右对称,一行分为左中右。一行的左和右刚好相反,中间则是固定的字符。这是转载 2016-10-16 23:16:47 · 2066 阅读 · 0 评论 -
C语言:标记化结构初始化语法
转载自http://www.cnblogs.com/omenglvrong1/p/4363821.html 以前在看Linux代码时,就对它的结构体初始化写法感到奇怪,所有的初始化代码都写清了变量名,并且变量名前面还有一个诡异的点。最近学习Linux设备驱动,又遇到了,就查了一下,发现自己的知识果然纰漏不少,此种初始化写法并不是什么特殊的代码风格,而是所谓的C语言标记化结构初转载 2016-11-11 11:37:42 · 489 阅读 · 0 评论 -
va_list用法
va_list是在C语言中解决变参问题的一组宏。引用其头文件位 #include #ifdef _M_ALPHAtypedef struct{ char *a0; //pointer to first homed integer argument int offset; //byte offset of next parameter} va_list;#elsetyped原创 2016-11-16 19:46:36 · 699 阅读 · 0 评论 -
线程的分离状态
其实在写上一篇日志的时候,由于我把创建线程的返回值的判断条件写错了,程序每次运行的时候都是显示创建线程失败,我就百度了一下,有人说是桟资源不足引起的,要调用一个pthread_attr_setdetachstate()函数,当时不明白为什么,其原理是什么,于是又搜了一下,下文是其原理简述:在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。转载 2016-11-30 20:52:29 · 381 阅读 · 0 评论 -
pthread_mutex_timedlock()
当程序试图获取一个已加锁的互斥量时,pthread_mutex_timedlock互斥量原语允许绑定线程阻塞时间。pthread_mutex_timedlock函数与pthread_mutex_lock函数是基本等价的,但是在达到超时时间时,pthread_mutex_timedlock不会对互斥量进行加锁,而是返回错误码ETIMEOUT.#include #include int pth原创 2016-12-03 13:42:59 · 11718 阅读 · 0 评论 -
Redis:ae事件模型
1.Redis的事件模型库大家到网上Google“Redis libevent”就可以搜到Redis为什么没有选择libevent以及libev为其事件模型库,而是自己写了一个事件模型。 从代码中可以看到它主要支持了epoll、select、kqueue、以及基于Solaris的event ports。主要提供了对两种类型的事件驱动:1.IO事件(文件事件),包括有IO的读事件和写转载 2016-11-24 12:04:38 · 2863 阅读 · 0 评论 -
Linux C:文件锁flock
1. 场景概述 在多线程开发中,互斥锁可以用于对临界资源的保护,防止数据的不一致,这是最为普遍的使用方法。那在多进程中如何处理文件之间的同步呢?我们看看下面的图:图中所示的是两个进程在无同步的情况下同时更新同一个文件的过程,其主要的操作是:1. 从文件中读取序号。2. 使用这个序号完成应用程序定义的任务。3. 递增这个序号并将其写回文件中。从图中可转载 2017-01-20 14:08:04 · 2741 阅读 · 0 评论 -
Source Insight 代码自动排版
Source Insight是大家常用的1,下载astyle工具:http://download.youkuaiyun.com/download/wynter_/100244112,打开你的SourceInsight, 选择菜单“Options-->Custom Commands-->Add”, 输入Artistic Style(可以随便输入一个名字,不要乱填,最好能体现自动排版的字眼,因为这原创 2017-10-16 16:54:55 · 2623 阅读 · 0 评论 -
无题
Read the fucking source code!原创 2018-05-31 20:07:13 · 316 阅读 · 2 评论 -
vscode仿照source insight配置备份
User setting{ "svn.enableProposedApi": "none", "files.eol": "\n", "files.exclude": { "**/.vscode": true }, "vsicons.dontShowNewVersionMessage": true, "files.autoSave":...原创 2019-08-29 11:12:43 · 2405 阅读 · 0 评论 -
C snippets: base64编码二进制文件(测试jpg图片)
如下是编码接口:const char * base64char = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";char *base64_encode_file(const unsigned char * bindata, char * base64, int binlength){ int i...原创 2019-09-01 20:37:07 · 408 阅读 · 0 评论 -
VS Code + gdbserver 嵌入式arm远程调试
0. 背景海思sdk编译出文件系统中的gdb不支持回删,非常难用。想用一个比较靠谱且方便的调试方式,找了一些资料,发现vscode + gdbserver是不错的选择。使用这种方式,可以暂停程序运行,直接在代码上打断点,直观的看到当前的堆栈信息,查看每个变量的当前值和内存地址等等,目前所支持的功能还未发掘完毕,应该还有其他妙用。。。1. 准备gdbserver先找一下当前宿主主机的交叉编...原创 2019-10-10 14:43:53 · 8637 阅读 · 3 评论 -
socket选项:SO_ERROR
获取套接字选项参数getsockopt原型:#include int getsockopt(int sockfd, int level, int option, void *optval, socklen_t optlen);当一个socket发生错误的时候,将使用一个名为so_error的变量记录对应的错误代码,这又叫做pending error,so_error为0时表示没原创 2016-09-20 21:59:39 · 12590 阅读 · 0 评论 -
将两个有序链表合并成一个新的有序链表
原文档地址:http://blog.youkuaiyun.com/lalor/article/details/7429989问题定义: 写一个函数SortedMerge函数,该函数有两个参数,都是递增的链表,函数的功能就是合并这两个递增的链表为一个递增的链表,SortedMerge的返回值是新的链表。新链表由前两个链表按元素递增顺序合并而成,也就是说它不会创建新的元素转载 2016-09-07 15:47:45 · 3668 阅读 · 0 评论 -
排序算法:归并排序
#include #include void Merge(int sourceArr[], int tempArr[], int startIndex, int midIndex, int endIndex) { int i = startIndex, j = midIndex + 1, k = startIndex; while(i != midIndex + 1 &&原创 2016-09-07 11:31:07 · 279 阅读 · 0 评论 -
面试:字符串移动
编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来的是"abcdefg",如果n=2,移位后应该是"fgabcde"。主要考察的就是标准库函数的熟练程度。#include #include #include void LoopMove1(char *pstr, int steps){ int n = strlen(pstr) - steps; char原创 2016-09-10 10:47:24 · 308 阅读 · 0 评论 -
将一句话中的单词倒置,标点符号不倒置。例如:I am from China! 倒置后变为:China! from am I
这道题可分为两步:第一步将整个字符串全部倒置:!anihC morf ma I 第二步部分倒置,如果不是空格,则倒置单词#include #include int main(){ int i = 0, j = 0; int begin = 0, end = 0; char str[] = "I am from China!", tmp; //char tmp;原创 2016-09-10 13:19:43 · 5755 阅读 · 0 评论 -
C语言:单链表的创建,打印及销毁
#include #include #define MAX 10struct List{ int number; char name[MAX]; struct List *next;};typedef struct List Node;typedef Node *Link;/********************* * 释放链表 ***************原创 2016-09-10 14:31:56 · 5803 阅读 · 0 评论 -
C语言:单链表查找其中节点的数据
#include #include #define MAX 10struct List{ int number; int total; struct List *next;};typedef struct List Node;typedef Node *Link;int data[2][MAX] = {3, 9, 25, 5, 7, 26, 56, 80, 2, 6原创 2016-09-10 14:56:46 · 11035 阅读 · 0 评论 -
排序算法:快速排序
快速排序是实际应用中比较常用的一种排序方法,具有速度快,效率高的优点。思想:快速排序采用的思想是分治思想。快速排序找出一个元素(理论上可以找任何一个元素)作为基准(key),然后对数组进行分区操作,使基准元素左边元素的值不大于基准值,基准元素右边元素的值不小于基准值。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。即:如何调整基准 的位置以及调整返回基原创 2016-08-31 21:30:41 · 368 阅读 · 0 评论 -
常用的数据结构操作flash模拟演示
初学者经常会对数据结构处理有点摸不着头脑,这里有个很直观的flash动态演示,可以清楚的了解数据的处理过程。打开方式:直接拖入浏览器中打开(推荐IE)链接:http://pan.baidu.com/s/1kUSV89L 密码:fnw2原创 2016-08-31 21:32:40 · 1004 阅读 · 0 评论 -
排序算法:冒泡排序
#include void swap(int *a, int *b){ int temp; temp = *a; *a = *b; *b = temp;}int main(){ int array[10] = {10, 22, 12, 11, 23, 44, 32, 54, 9, 40}; int i, j; int flag = 1; for(i = 0; i <原创 2016-08-31 16:22:55 · 285 阅读 · 0 评论 -
排序算法:插入排序
插入排序是排序算法的一种,它不改变原有的序列(数组),而是创建一个新的序列,在新序列上进行操作。这里以从小到大排序为例进行讲解。基本思想及举例说明插入排序的基本思想是,将元素逐个添加到已经排序好的数组中去,同时要求,插入的元素必须在正确的位置,这样原来排序好的数组是仍然有序的。在实际使用中,通常是排序整个无序数组,所以把这个无序数组分为两部分排序好的子数组和待插入的元素转载 2016-08-31 23:36:41 · 434 阅读 · 0 评论 -
C语言:单链表内节点删除
#include #include #define MAX 10struct List{ int number; int total; struct List *next;};typedef struct List Node;typedef Node *Link;int data[2][MAX] = {1, 3, 5, 7, 2, 4, 6, 8, 9, 0, 15,原创 2016-09-13 13:38:25 · 793 阅读 · 0 评论 -
struct hostent结构体使用
结构体定义: struct hostent { char *h_name; //正式主机名 char **h_aliases; //主机别名 int h_addrtype; //主机IP地址类型:IPV4-AF_INET int h_length; //主机IP地址字节长度,对于IPv4是四字节,即32位 char **h_add原创 2016-09-13 21:23:02 · 24949 阅读 · 4 评论 -
C语言:单链表内节点的插入
1.插在链表开头新的节点插入到链表的开头,需要将新节点的指针指向链表的首节点,并将链表的首节点设为新节点。New->next = Pointer;Head = New;2.插在链表中间新的节点插入到链表的中间,如果我们找到Pointer节点,则需要将新节点的指针指向Pointer节点的指针(即下一个节点),但不能让链表断裂。所以第一步必须将新节点原创 2016-09-14 10:02:19 · 9526 阅读 · 0 评论 -
FILE文件流的中fopen、fread、fseek、fclose的使用
FILE文件流用于对文件的快速操作,主要的操作函数有fopen、fseek、fread、fclose,在对文件结构比较清楚时使用这几个函数会比较快捷的得到文件中具体位置的数据,提取对我们有用的信息,满足编程中的需要。以下分别进行说明,还有他们使用时的注意事项fopen函数原型 FILE * fopen(const char *path,cost char *mode)转载 2016-09-19 10:47:26 · 384 阅读 · 0 评论 -
C语言:哲学家就餐问题
场景:原版的故事里有五个哲学家(不过我们写的程序可以有N个哲学家),这些哲学家们只做两件事--思考和吃饭,他们思考的时候不需要任何共享资源,但是吃饭的时候就必须使用餐具,而餐桌上的餐具是有限的,原版的故事里,餐具是叉子,吃饭的时候要用两把叉子把面条从碗里捞出来。很显然把叉子换成筷子会更合理,所以:一个哲学家需要两根筷子才能吃饭。现在引入问题的关键:这些哲学家很穷,只买得起五转载 2016-09-19 14:38:42 · 4466 阅读 · 0 评论 -
C语言:单链表的反转
步骤一:从首节点开始为Back节点、Back节点的下一个节点为pointer节点,若Back节点是首节点,则将Back节点的指针设为NULL;Back = head;pointer = back->next;Back->next = NULL;从下一个节点(Next节点)设为pointer节点的指针,将pointer节点的指针指向上一个节点(Back节点),Back节点设为原创 2016-09-19 19:39:18 · 1406 阅读 · 0 评论 -
http中get与 post的区别
原文链接: http://mp.weixin.qq.com/s?__biz=MzI3NzIzMzg3Mw==&mid=100000054&idx=1&sn=71f6c214f3833d9ca20b9f7dcd9d33e4#rd点击打开链接GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包转载 2016-09-20 09:49:34 · 280 阅读 · 0 评论 -
C语言:字符串的逆转
#include #include #include int main(){ char *strSrc = "abcdefg"; char *strDst = NULL; char t; char *d, *s; //定义两个临时指针 int i = 0; int len = 0; len = strlen(strSrc); //计算原字符串的长度 strDst原创 2016-09-01 16:50:12 · 904 阅读 · 0 评论