
linux c
xiewenbo
互联网广告行业呆过几年,旅游公司呆过几年,对机器学习,自然语言处理,图像识别,个性化推荐 有兴趣
展开
-
C语言数组
数组和结构体虽然有很多相似之处,但也有一个显著的不同:数组不能互相赋值。例如这样是错误的:int a[5], b[5] = { 4, 3, 2, 1 };a = b;既然不能互相赋值,也就不能用数组类型作为函数的参数或返回值。如果写出这样的函数定义:void foo(int a[5]){ ...}然后这样调用:int array[5] = {};foo(array);编译器转载 2012-04-12 17:10:42 · 493 阅读 · 0 评论 -
使用 SCons 轻松建造程序
前言make 这个工具自上个世纪 70 年代 Stuart Feldman 在贝尔实验室开发出以来,就一直是类 UNIX 程序员的最爱之一。通过检查文件的修改时间,make 工具可以知道编译目标文件所要依赖的其他文件。在复杂的项目中,如果只有少数几个文件修改过,make 工具知道仅仅需要对哪些文件重新编译就可以确保目标程序被正确的编译链接。这样做的好处就是在编译中,不仅可以节省大量的重复输转载 2014-07-18 10:34:14 · 487 阅读 · 0 评论 -
GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名
1。gcc包含的c/c++编译器gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明白前面这半句是什么意思:))一般c程序就用gcc编译,c++程序就用g++编译2。gcc的基本用法gcc test.c这样将编译出一个名为a.out的程序gcc test.c -o test这样将编译出一个名为test的程序,-o参数用来指定生成程序的名转载 2014-06-27 13:50:49 · 688 阅读 · 0 评论 -
gcc命令中参数c和o混合使用的详解
操作系统:windows xp , 软件:msys , 编译器:gcc gcc -c a.c 编译成目标文件a.o gcc -o a a.o 生成执行文件a.exe gcc a.c 生成执行文件a.exe gcc -o a -c a.c 编译成目标文件a gcc -o a a.c 生成执行文件a.exe 在a.c中引用test转载 2014-06-27 13:48:13 · 2976 阅读 · 0 评论 -
在linux中使用vi 打开文件时,能显示行号吗
在VI的命令模式下输入“:set nu” 或者修改vi配置文件“vi ~/.vimrc”,在其中添加“set nu” 在VI的命令模式下输入“:set nu”,就有行号了。 但是想将这个设置写进VI的配置文件,就 # vi ~/.vimrc 在这个文件中,添加 set nu 就行了转载 2014-07-19 19:21:18 · 2349 阅读 · 1 评论 -
linux之gcc命令
在Linux下进行C语言编程,必然要采用GNU GCC来编译C源代码生成可执行程序。Gcc指令的一般格式为: Gcc [选项] 要编译的文件 [选项] [目标文件]。其中,目标文件可缺省,Gcc默认生成可执行的文件名为:编译文件.out看一下经典入门程序"Hello World!"# vi hello.c ,编辑如下:[cpp] view plaincopy转载 2014-06-17 23:44:45 · 2196 阅读 · 0 评论 -
C语言extern作用(全局变量)
用C语言编写程序的时候,我们经常会遇到这样一种情况:希望在头文件中定义一个全局变量,然后包含到两个不同的c文件中,希望这个全局变量能在两个文件中共用。 举例说明:项目文件夹project下有main.c、common.c和common.h三个文件,其中common.h文件分别#include在main.c和common.c文件中。现在希望声明一个字符型变量key,在main.c和com...转载 2020-01-07 23:15:02 · 3360 阅读 · 2 评论 -
指针 int* char*
int a[5] = {1,2,3,4,5};int* p = a;coutcoutcoutchar* pst = "xiewenbo";coutcoutcoutcoutcoutcoutcoutint a[5] = {1,2,3,4,5}int* p = achar* pst = "xiewenbo"p:0052FAE原创 2014-06-20 00:41:16 · 470 阅读 · 0 评论 -
linux locale引发的终端输入问题
export LC_ALL="en_US.utf-8"原创 2014-07-30 16:17:16 · 576 阅读 · 0 评论 -
32位和64位系统区别及int字节数
一)64位系统和32位有什么区别? 1、64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存2、64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。 什么是64位处理器?之所以叫做“64位处理器”,是因为电脑内部都是实行2进制运算,处理器(C转载 2014-06-23 10:13:27 · 645 阅读 · 0 评论 -
联合体union
当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union)。在C Programming Language 一书中对于联合体是这么描述的: 1)联合体是一个结构; 2)它的所有成员相对于基地址的偏移量都为0; 3)此结构空间要大到足够容纳最"宽"的成员; 4)其对齐方式要适合其中所有的成员;下面解释这四条描转载 2014-06-23 10:15:24 · 479 阅读 · 0 评论 -
【linux c 编译】collect2: ld returned 1 exit status
最关键的是-lpthread在Linux下创建线程时,编译时会出现下面的错误,[root@linuxserver 807]# gcc -o 22 22.c/tmp/cc21HcoW.o(.text+0x4c): In function `main':: undefined reference to `pthread_create'collect2: ld returne转载 2014-08-22 11:10:39 · 6672 阅读 · 0 评论 -
C语言的数组名和对数组名取地址
相信不少的C语言初学者都知道,数组名相当于指针,指向数组的首地址,而函数名相当于函数指针,指向函数的入口地址。现在又这样一个问题,如果对数组名取地址,那得到的会是什么呢?很多人立刻会想到:给指针取地址,就是指针的指针,既二级指针嘛!当然这样的结论是错误的,不然这篇笔记也就没有意义了。下面我们来逐步分析,下面是一段验证这个问题的代码Code:#includ转载 2014-06-25 11:04:58 · 535 阅读 · 0 评论 -
c 数组做为形参时 该参数退化为指针
c 数组做为形参时 如何求其长度原创 2014-06-25 10:29:10 · 3239 阅读 · 2 评论 -
linux c 字符数组指针和字符串指针(区别代码段)
字符数组:#include char* show(){ //char* p = "kobe"; char name[] = "xiewenbo\n"; char* p ; p = name; return p;}int main(){ char* p2 = show(); printf("%s",*p2); return 0;}字符串指针:#include转载 2012-04-12 17:16:06 · 881 阅读 · 0 评论 -
linux select 解释
select系统调用是用来让我们的程序监视多个文件句柄(file descrīptor)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。文件在句柄在Linux里 很多,如果你man某个函数,在函数返回值部分说到成功后有一个文件句柄被创建的都是的,如man socket可以看到"On success, a file descrīpt转载 2012-07-12 14:28:56 · 576 阅读 · 0 评论 -
curl
概念 它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。 curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法, FTP上传, kerberos认证,HTTP上传, 代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,上载文件断点续传,,http代转载 2012-07-25 17:55:16 · 843 阅读 · 0 评论 -
回调函数
如果参数是一个函数指针,调用者可以传递一个函数的地址给实现者,让实现者去调用它,这称为回调函数(Callback Function)。例如qsort(3)和bsearch(3)。表 24.7. 回调函数示例:void func(void (*f)(void *), void *p);调用者实现者提供一个回调函数,再转载 2012-07-25 22:11:12 · 446 阅读 · 0 评论 -
c 可变参数方法
到目前为止我们只见过一个带有可变参数的函数printf:int printf(const char *format, ...);以后还会见到更多这样的函数。现在我们实现一个简单的myprintf函数:例 24.9. 用可变参数实现简单的printf函数#include #include void myprintf(const char *format, ...)转载 2012-07-25 22:16:37 · 595 阅读 · 0 评论 -
Linux下C线程池的实现
什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。 下面是Linux系统下用C语言创建的一个线程池。线程池会维护一个任务链表(每个CThread_worker结构就是一个任务)。 p转载 2012-10-24 20:02:17 · 620 阅读 · 0 评论 -
Linux线程-互斥锁pthread_mutex_t
在线程实际运行过程中,我们经常需要多个线程保持同步。这时可以用互斥锁来完成任务;互斥锁的使用过程中,主要有pthread_mutex_init,pthread_mutex_destory,pthread_mutex_lock,pthread_mutex_unlock这几个函数以完成锁的初始化,锁的销毁,上锁和释放锁操作。一,锁的创建 锁可以被动态或静态创建,可以用转载 2014-06-23 15:53:13 · 481 阅读 · 0 评论 -
POSIX的pthread_join
joinjoin是三种同步线程的方式之一。另外两种分别是互斥锁(mutex)和条件变量(condition variable)。调用pthread_join()将阻塞自己,一直到要等待加入的线程运行结束。可以用pthread_join()获取线程的返回值。一个线程对应一个pthread_join()调用,对同一个线程进行多次pthread_join()调用是逻辑转载 2014-06-23 17:14:28 · 629 阅读 · 0 评论 -
linux 线程池+Makefile
#include #include struct job{ void* (*callback_function)(void *arg); //线程回调函数 void *arg; //回调函数参数 struct job *next;};struct threadpool{ int th转载 2014-06-23 16:31:55 · 605 阅读 · 0 评论 -
pthread_cond_t 和 pthread_mutex_t
举一个例子(http://blog.youkuaiyun.com/KataDoc360/archive/2009/02/16/3897957.aspx):pthread_mutex_t count_lock;pthread_cond_t count_nonzero;unsigned count = 0;decrement_count () { pthread_mutex_转载 2014-06-23 16:52:43 · 674 阅读 · 0 评论 -
strcpy函数的实现
大家一般认为名不见经传strcpy函数实现不是很难,流行的strcpy函数写法是:[cpp] view plaincopychar *my_strcpy(char *dst,const char *src) { assert(dst != NULL); assert(src != NULL);转载 2014-06-24 16:20:47 · 561 阅读 · 0 评论 -
linux安装zthread
解压, 进入解压目录安装目录为: /usr/local/zthread如果目录不存在,则建一个: mkdir -p /usr/local/zthread./configure --prefix=/usr/local/zthreadmake原创 2014-06-27 14:12:37 · 896 阅读 · 0 评论