
c语言
文章平均质量分 67
willinux
github地址:https://github.com/stephenix
展开
-
文件锁-flock和fcntl
文件级的锁:对整个文件加锁,flock系统调用文件内范围的锁:对文件的某个范围加锁,fcntl库函数1. flockflock是系统调用,加的建议锁tips:flock的锁的语义:获取到的锁是与打开的文件描述符,而不是文件描述符或者inode相关联(1)对于open同一个文件多次,获取到的不同fd,flock会认为是不同的,所以再加flock会block(2)flock创建的锁是和fd相关的,所以复制dup(fd)和fork产生的fd,都是同一把锁demo:#include <std原创 2021-07-12 10:25:24 · 611 阅读 · 0 评论 -
C语言面试题目
https://cloud.tencent.com/developer/article/1637948转载 2020-08-05 19:40:38 · 195 阅读 · 0 评论 -
IO多路复用select、poll、epoll
IO多路复用转载 2020-07-30 11:34:37 · 111 阅读 · 0 评论 -
C++编译常见错误
1.error: ‘common’ has not been declared没有include头文件或者没有using namespace2.undefined reference to void function,collect2: error: ld returned 1 exit status找的到头文件(找得到定义),链接ld找不到目标文件,因为找不到函数定义,函数实现没有找到前两个问题主要说明,.h和.cpp为什么会分开,.h是函数声明,方便其他人调用,.cpp是函数定义(函数实现),链原创 2020-07-15 19:41:13 · 1176 阅读 · 0 评论 -
extern C的作用详解
https://blog.youkuaiyun.com/jiqiren007/article/details/5933599原创 2020-05-28 14:43:58 · 651 阅读 · 0 评论 -
手写库函数
手写strcpy、memcpy、memmove、strcat、strcmpstrcpy、strncpy都不安全,有strcpy_s安全版本1.strcpy不仅会复制字符串内容,且会复制字符串结尾符char* strcpy(char* dest, const char* src) { if (src == NULL || dest == NULL) return NULL; char...原创 2019-03-04 22:28:28 · 396 阅读 · 0 评论 -
curl命令行的地址里用单引号或者双引号的原因
curl -v http://xxxx/download/yyy?t=123&key=456由于url里有&,使用&会使进程后台运行,必须对&进行转义,加单引号或者双引号。curl -v ‘http://xxxx/download/yyy?t=123&key=456’加单引号和双引号的区别:单引号字符串的限制:单引号里的任何字符都会原样输出,单引号...原创 2019-02-13 14:12:15 · 8704 阅读 · 0 评论 -
backtrace
backtrace代码里获取调用堆栈介绍用法[1] http://man7.org/linux/man-pages/man3/backtrace.3.html[2] https://www.gnu.org/software/libc/manual/html_node/Backtraces.html代码void PrintTrace() { int nptrs; void ...原创 2019-01-14 10:26:37 · 1752 阅读 · 0 评论 -
链接器和装入器的原理
https://www.ibm.com/developerworks/cn/linux/l-dynlink/index.html转载 2018-12-24 22:27:15 · 367 阅读 · 0 评论 -
centos gdb调试报错
报错信息:Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.212.el6.x86_64 libgcc-4.4.7-23.el6.x86_64解决方法:修改修改/etc/yum.repos.d/CentOS-Debuginfo.repo里面的debuginfo目录中enabled=1yum install ns...转载 2018-11-14 10:49:33 · 555 阅读 · 0 评论 -
gcc编译参数
https://www.jianshu.com/p/223d8b6aa879g++ test1.cpp -I/usr/local/include -L/usr/local/lib -lgtest -lpthread -o test1-I/dir:在头文件搜索路径列表中添加 dir 目录-L/dir:在-l选项库文件搜索路径列表中添加 dir 目录-llibrary:连接名为library的...原创 2018-11-04 16:16:32 · 508 阅读 · 0 评论 -
C/C++ 常见面试题目 (一)
C/C++ 常见面试题目常见的题目,不一定用过,但一定要知道。1. C语言中C程序运行时的内存分配机制C程序使用的是用户的内存空间,区别于内核的内存空间,再细就到内核态和用户态了。用户的内存空间可以分为三个部分: (1)程序区: (2)静态存储区: (3)动态存储区: 程序区用来存放C程序运行代码;静态存储区用来存放静态变量,如全局变量存放在静态存储区,在程序开始执行时给全局变量分配存储区,原创 2015-07-30 22:39:43 · 1956 阅读 · 0 评论 -
快速排序 归并排序
快速排序 归并排序1. 归并排序许多算法在结构上是递归的,为了解决一个给定的问题,算法一次或多次递归地调用其自身以解决紧密相关的若干子问题,这些算法典型地遵循分治法的思想。 分治模式在每层递归时都有3个步骤: 分解原问题为若干子问题,这些子问题是原问题的规模较小的实例。 解决解决这些子问题,递归地求解各个子问题。2. 快速排序原创 2015-07-22 21:58:30 · 776 阅读 · 0 评论 -
C 初始化数组
在做leetcode题目217时,编译报错,error: variable-sized object may not be initialized。定义数组时:数组名[常量表达式],常量表达式中不能有变量,如果n是用户输入的或者是函数参数传递过来的或n是定义的局部变量,都不能 int a[n] = {0}; 这么初始化数组。只有n是常量,比如10才能这么初始化。我的不完全理解是:编译报错,原创 2015-05-29 20:12:44 · 934 阅读 · 0 评论 -
C语言函数名与函数指针详解
转自:http://c.biancheng.net/cpp/html/496.html,同时参考了http://www.cnblogs.com/gmh915/archive/2009/09/30/1576996.html 讲的很好,看完我的收获是:一是理解了函数指针、函数名,函数名指向该函数的代码在内存中的首地址,函数名就是一个函数指针变量;二是如何调用函数指针;三是typed转载 2015-05-28 09:32:23 · 656 阅读 · 0 评论 -
额。。。
<br /><br />用选择法对10个整数按由小到大的顺序排序<br />#include<stdio.h><br />void main()<br />{<br /> void sort(int x[],int n);<br /> int *p,i,a[10];<br /> p=a;<br /> for(i=0;i<10;i++)<br /> scanf("%d",p++);<br /> p=a;<br /> sort(p,10);<br /> for(p=a,i=0;i<10;i++)原创 2010-11-21 00:05:00 · 756 阅读 · 2 评论 -
字符数组
<br />字符串和字符数组的差别:<br />1.字符串有结束标志:‘0’,系统会自动在最后一个字符后面加‘0’作为结束标志;字符数组不会加‘0’。例如:char c[]="I like C" 等价于 char c[]={'I',' ','l','i','k','e',' ','C','/0'} 必须要加最后的'/0'. <br />2.字符串在内存中是以字符数组的形式储存。 <br />#include<stdio.h><br />void main (原创 2010-11-18 12:37:00 · 597 阅读 · 0 评论 -
数组变指针 选择法排序
<br />改编将上一篇用选择法对10个整数按从大到小顺序排序改为指针<br />#include"stdio.h"void main(){ void sort(int *x,int n); int a[10],i,*p; p=a; for(i=0;i<10;i++) scanf("%d",p++); printf("/n"); p=a; sort(p,10); for(p=a;p<a+10;p++) printf("%原创 2010-11-28 21:46:00 · 862 阅读 · 0 评论 -
相反排序交换值
<br />#include<stdio.h>void main(){ void inv(int *x,int n); int i,arr[10],*p=arr; for(i=0;i<10;i++,p++) scanf("%d",p); p=arr; /*要赋值*/ inv(p,10); for(p=arr;p<arr+10;p++) printf("%d",*p);} void inv(int *x,int n) {原创 2010-11-28 21:34:00 · 793 阅读 · 2 评论