C
__ever
业精于勤,荒于嬉;行成于思,毁于随
展开
-
强大的c/c++测试工具--lint简介
lint是最著名的C语言工具之一,是由贝尔实验室SteveJohnson于1979在PCC(PortableC Compiler)基础上开发的静态代码分析,一般由UNIX系统提供。中文名lint 提出者SteveJohnson 时 间1979 类 型C语言工具之一 目录1 基本功能2 系统版本3 PC-lint▪ PC-Lint简转载 2016-04-20 11:28:15 · 11746 阅读 · 3 评论 -
linux内核中GNU C和标准C的区别
今天看了一下午的linux内核编程方面的内容,发现linux 内核中GNU C与标准C有一些差别,特记录如下:linux 系统上可用的C编译器是GNU C编译器,它建立在自由软件基金会的编程许可证的基础上,因此可以自由发布。GNU C对标准C进行进一步扩展,以增强标准C的功能。下面我们对GNU C中的扩展进行一下总结:1、零长度数组GNU C 允许使用零长度数组,在定义变长对象的头结构转载 2016-11-27 18:17:19 · 5286 阅读 · 0 评论 -
unix环境高级编程笔记--持续更新
第一章.Unix系统基础知识1.unix体系结构:应用->shell/公用函数库->系统调用->内核,其中shell为运行其他应用程序提供接口2.cat /etc/passwd口令文件可以修改用户登陆信息3.Linux使用的shell通常是/bin/bash或者/bin/sh4.创建目录时会自动创建两个文件名:.(成为点)和..(点点)。.代表当前目录,而..代表父目录5.只有原创 2016-12-02 19:21:14 · 602 阅读 · 0 评论 -
C--复习笔记
int (*a)[10]; a是指向具有10个整型数数组的指针int (*a)(int); a是一个函数指针,通过用于回调函数int (*a[10]) (int);a是一个有十个函数指针的数组,每个指针指向一个返回值是int,参数是int的函数只有全局变量和static变量能存储在静态存储区(固定内存中),静态存储区的变量只初始化一次(下次再对该变量初始化会跳过)且直到程序结束才释放该变量原创 2016-09-30 11:26:46 · 316 阅读 · 0 评论 -
mmap函数
mmap函数是将一个文件或者其他对象映射进内存。函数原型:void* mmap(void* addr,size_t length,int prot,int flags,int fd,off_t offset);其中addr指文件应映射到进程空间的起始地址,默认NULL由内核分配;lenth指映射的文件长度,prot指文件被映射为内存后的访问权限,一般有PROT_READ(可读) , P转载 2016-09-08 08:44:19 · 728 阅读 · 0 评论 -
#error的作用
编译程序时,只要遇到 #error 就会跳出一个编译错误,既然是编译错误,要它干嘛呢?其目的就是保证程序是按照你所设想的那样进行编译的。下面举个例子:程序中往往有很多的预处理指令#ifdef XXX...#else#endif当程序比较大时,往往有些宏定义是在外部指定的(如makefile),或是在系统头文件中指定的,当你不太确定当前是否定义了 XXX 时,转载 2016-09-21 15:18:24 · 594 阅读 · 0 评论 -
main函数中的argc,argv,envp参数
格式是 int main( int argc ,char *argv[] , char *envp[]) 其中argc是代表命令行的参数个数argv[]存储命令参数,其中argv[0]通常代表该程序的程序名envp[]代表系统的环境变量转载 2016-08-20 22:10:06 · 2233 阅读 · 0 评论 -
类型限定符--restrict
restrict,C语言中的一种类型限定符(Type Qualifiers),用于告诉编译器,对象已经被指针所引用,不能通过除该指针外所有其他直接或间接的方式修改该对象的内容.restrict是c99标准引入的,它只可以用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式.即它告诉编译器,所有修改该指针所指向内存中内容的操作都必须通过该指针来修改,而不能通过其它途径(其它变量或指转载 2016-08-22 09:08:41 · 380 阅读 · 0 评论 -
linux下的stdout,stdin,stderr
stdout, stdin, stderr的中文名字分别是标准输出,标准输入和标准错误。在Linux下,当一个用户进程被创建的时候,系统会自动为该进程创建三个数据流,也就是题目中所提到的这三个。那么什么是数据流呢(stream)?我们知道,一个程序要运行,需要有输入、输出,如果出错,还要能表现出自身的错误。这是就要从某个地方读入数据、将数据输出到某个地方,这就够成了数据流。因此,一转载 2016-04-27 10:22:29 · 323 阅读 · 0 评论 -
C语言中scanf()和printf()的返回值问题
C语言中scanf()函数的返回值是成功赋值的变量的个数,假设: int a,b; scanf("%d, %d",&a,&b);如果你输入:m,30 scanf()函数首先为变量a赋值,而变量a是整形而你输入的是字符m,所以a没有被成功赋值,scanf()函数跳出,导致变量a,b均没有被成功赋值,scanf()返回值为0.如果你输入:30,m 那么scanf()函数的返回值就是原创 2016-04-22 20:30:27 · 1073 阅读 · 1 评论 -
C语言中exit(1)和exit(0)的区别
exit是一个函数,进程退出时会有一个值,exit函数的参数就是指明进程退出的返回值,操作系统根据这个值来判断是否是正常退出。通常exit(0)表示正常退出,其他参数表示异常退出原创 2016-05-11 14:48:25 · 2490 阅读 · 0 评论 -
栈的应用--简单四则运算
思想:我们平时输入的四则运算表达式,例如:9*(3-1)+2,属于中缀表达式。我们需要将它转换成后缀表达式:9 3 1 - * 2 +的形式求值。其中需要两个栈:数字栈和运算符栈。过程:逐个读取中缀表达式(char型):9*(3-1)+21.如果是数字则压入数字栈(如果是大于一位的数字则需要写个函数转换成int型)2.如果是'('则压入运算符栈中3.如果是'+'或者原创 2016-05-11 13:29:18 · 6170 阅读 · 2 评论 -
C语言的setvbuf函数:设置文件流的缓冲区
头文件:#include 函数setvbuf()用来设定文件流的缓冲区,其原型为: int setvbuf(FILE * stream, char * buf, int type, unsigned size);【参数】stream为文件流指针,buf为缓冲区首地址,type为缓冲区类型,size为缓冲区内字节的数量。参数类型type说明如下:_IOFBF转载 2016-04-26 10:49:36 · 11141 阅读 · 0 评论 -
C语言中缓冲区的分类与刷新
缓冲区分为:全缓冲、行缓冲、不带缓冲。1.全缓冲:当缓冲区满时就会被自动刷新(不同系统的缓冲区大小不同,Windows的好像是4KB)2.行缓冲:举例getchar()函数,当程序调用getchar()函数时,程序就等着用户按键,用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。当用户键入回车之后,getchar()函数才开始从键盘缓冲区中每转载 2016-04-25 21:36:32 · 1395 阅读 · 0 评论 -
ANSI c与C89,C99,C11的区别
不同版本标准差异总结(图片来源:http://www.crifan.com/summary_c_language_version_c89_amd1_c99_c11):以下为转载:【K&R C】 1978 年,Dennis Ritchie 和 Brian Kernighan 合作推出了《The C Programming Language》的第一版(按照惯例,经典著作一定有简称,该著作简转载 2016-04-20 10:18:53 · 4711 阅读 · 0 评论 -
C中printf的输出格式类型和%g的用法
%g是C语言printf()函数的一个输出格式类型,它表示以%f%e中较短的输出宽度输出单、双精度实数,在指数小于-4或者大于等于精度时使用%e格式 printf()输出格式类型说明: 输出类型 格式字符意义 a 浮点数、十六进制数字和p-计数法(C99) A 浮点数、十六进制数字和p-计数法(C99) c 输出单个字符转载 2016-04-20 10:33:42 · 38658 阅读 · 0 评论 -
十个经典的C开源项目代码
开源世界有许多优秀的开源项目,我选取其中十个最优秀的、最轻量级的C语言的项目,希望可以为C语言开发人员提供参考。十个最值得阅读学习的C开源项目代码1. Webbench2. Tinyhttpd3. cJSON4. CMockery5. Libev6. Memcached7. Lua8. SQLite9. UNIX v610. NETBSD十个最值得阅读学习的C开源项目转载 2017-04-06 09:33:51 · 29983 阅读 · 3 评论