C
文章平均质量分 63
qduningning
这个作者很懒,什么都没留下…
展开
-
define const 和 typedef
#define 只是用来做文本替换的。在编译阶段做字符串替换我查到一个讲const与#define的差别的帖子,里面谈到const与#define最大的差别在于:前者在堆栈分配了空间,而后者只是把具体数值直接传递到目标变量罢了。或者说,const的常量是一个Run-Time的概念,他在程序中确确实实的存在并可以被调用、传递。而#define常量则是一个Compile-Time概念,它的生命转载 2012-08-07 14:49:47 · 5330 阅读 · 0 评论 -
大端模式和小端模式
大端模式(Big_endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端模式(Little_endian):字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。int checkSystem( ){union check{int i;char ch;} c;c.i = 1;return (c.ch ==1原创 2012-09-10 23:04:12 · 5503 阅读 · 0 评论 -
【c语言】清空缓存 的问题
我们使用函数向某个文件从当前流标签所在位置,读取n个字符。我们也会使用函数想文件的某个流位置写如n字符。但是,当这种写的动作小、而频繁。每次写又必须反映到硬盘上,也就是说需要频繁的操作硬盘,写一些小的更改,这是非常耗损效率。所以自然我们想到了,我们设立一个缓冲区,将那些要写如的数据先写到缓冲区中,当缓冲区满,或者其他情况发生的是否,我们在一起将他们写入到硬盘上。这样可以大大提高应用程序读写文件的速转载 2012-09-11 09:46:06 · 10105 阅读 · 0 评论 -
exec运行shell语句
用fork函数创建子进程后,子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程完全由新程序代换。exec只是用另一个新程序替换了当前进程的正文、数据、堆和栈段。#include extern char **environ; int execl(const char *path, const char *arg, ..原创 2012-09-12 11:57:52 · 6084 阅读 · 0 评论 -
pthread_cond_wait()分析
/************pthread_cond_wait()的使用方法**********/ pthread_mutex_lock(&qlock); pthread_cond_wait(&qready, &qlock); pthread_mutex_unlock(&qlock);/************************************转载 2012-09-13 10:54:26 · 5310 阅读 · 0 评论 -
关于Readline函数
简介Readline 是一个强大的库,只要使用了它的程序,都可以用同一个配置文件配置,而且用同样的方法操作命令行,让你可以方便的编辑命令行。 使用 readline 的程序现在主要有 Bash, GDB,ftp 等。readline 付予这些程序强大的 Emacs 似的命令行编辑方式,你可以随意绑定你的键盘。测试程序test.c#include ;#include原创 2012-09-13 12:46:25 · 6298 阅读 · 0 评论 -
关于c的随机数
一说起随机函数,恐怕又有人说这是老生长谈了……一般很多人都形成了自己的固定格式,因为随机数用处比较大,用的时候比较多,拿过来就用了。但是新 手不这么干,他们总是抱有疑惑,我就是一个新手,而且较菜……为了让跟我一样的菜鸟看明白,我会尽量的说得让高手们不屑一顾(:由于可能内容太多可能会分 篇,大家见谅^计算机的好处是精确,所以它不擅长模拟信号,但它的缺点也是如此。于是在一些模拟问题上计算机转载 2012-09-14 09:05:13 · 5742 阅读 · 0 评论 -
进程间通信——管道
管道是Linux系统中最古老的进程间通信(IPC,InterProcess Communication)手段,它把一个程序的输出直接连接到另一个程序的输出。1.无名管道无名管道是Linux中管道通信的一种原始方法。特点它只能用于具有亲缘关系的进程之间的通信它是一个半双工的通信模式,它具有固定的读端和写端管道也可以看做一种特殊的文件,对他的读写也可以直接使用普通的read()原创 2012-09-16 20:32:55 · 6135 阅读 · 0 评论 -
exit和_exit
exit和_exit函数都是用来终止进程的,当执行exit()和_exit()时,进程会无条件的停止剩下的所有操作,清除各种数据结构,并终止本进程的运行。但是,这两个函数还是有区别的。_exit()函数的作用是,直接使进程停止运行,清除其使用的内存,并清除其内核中的各种数据结构;exit()函数则在这些基础上做了一些包装,在执行退出之前加了若干道工序。exit和_exit函数最大的区别是exi原创 2012-09-16 10:18:16 · 5465 阅读 · 0 评论 -
C优先级详细列表
PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access fr原创 2012-09-21 01:42:58 · 5519 阅读 · 0 评论 -
linux下C开发中几点技术小总结
最近一致致力于linux下的C开发,因为老大是某讯出来的。因此,使用的主要技术都是某讯的基本的后台架构思想。在这段时间,学习到了很多,然后佩服某讯的技术果然很厉害。因此,自我感觉,从头开发我们这个项目,到现在,跟着我这个大牛级的老大学到了不少东西。目前在游戏里的公会系统,任务系统,邮件系统,地图,商城,等等很多大大小小的系统,都是由我来负责了。下面是我最近总结的转载 2013-04-15 16:19:21 · 665 阅读 · 0 评论 -
【笔记】柔性数组
也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。C99 中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员,但结构中的柔性数组成员前面必须至少一个其他成员。柔性数组成员允许结构中包含一个大小可变的数组。sizeof 返回的这种结构大小不包括柔性数组的内存。包含柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且原创 2012-09-10 23:03:22 · 5257 阅读 · 0 评论 -
【笔记】空结构体多大
struct student{}stu;sizeof(stu)的值是多少呢?很遗憾,不是0,而是1。为什么呢?你想想,如果我们把struct student 看成一个模子的话,你能造出一个没有任何容积的模子吗?显然不行。编译器也是如此认为。编译器认为任何一种数据类型都有其大小,用它来定义一个变量能够分配确定大小的空间。既然如此,编译器就理所当然的认为任何一个结构体都是有大小原创 2012-09-10 22:49:03 · 6273 阅读 · 0 评论 -
C——static 的作用
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variable转载 2012-09-10 21:45:48 · 5388 阅读 · 0 评论 -
const用法详解
面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的就const直接可以取代c中的#define以下几点很重要,学不好后果也也很严重const1. 限定符声明变量只能被读 const int i=5; int j=0; ... i=j; //非法,导致编译错误 j=i; //合法2. 必须初始化 cons转载 2012-08-07 14:58:02 · 5231 阅读 · 0 评论 -
关于++ --的谈论
"++"(--)是自增(减)运算符,单目运算符,优先级高于双目运算符,低于()。结合性为从右到左。. ++i是使用i之前先使i加一. i++是使用i之后再加一.对于++、--运算符,应注意以下几点:(1)++、--运算符只能用于变量,而不能用于常量或表达式,例如8++,(x+y)--均是不合法的。(2)++、--运算符是单原创 2012-07-31 08:32:37 · 1266 阅读 · 0 评论 -
[心得]C语言中整型与字符串之间的转换
整型转字符串:用到的函数是sprintf头文件:stdio.h 函数原型:int sprintf( char *buffer, const char *format, [ argument] … ) ; 返回值:字符串长度(strlen)format :%[指定参数][标识符][宽度][.精度]指示符#include int main(){ char strin原创 2012-08-18 11:28:13 · 10159 阅读 · 1 评论 -
[心得]关于C语言中对用户输入选择选项的校验的一个思路
在页面设计中经常涉及让用户选择选项来进行不同的操作,以及是否确认的验证,一般是给一个列表,每个选项用一个字符标识,用户通过选择字符执行不同的操作,这里就牵扯到对用户输入的内容进行格式校验,比如让用户输入Y或者N,则用户输入Y N之外的字符及输入多个字符都硬背认为是非法输入,应该返回让用户重新输入。关于校验有很多方法,这里提供一个自己研究的,不知道有没有别人分享过,反正这是自己想出来的 、、、、原创 2012-08-18 11:12:28 · 8159 阅读 · 0 评论 -
[笔记]C语言中关于getch()
getch()函数是无回显的从控制台取得一个字符。以利用getch()函数让程序调试运行结束后等待编程者按下键盘才返回编辑界面,即任意键继续效果。#include #include int main(){ int i ; i = getch(); printf("press any key to continue\n"); printf("%d\n", i);原创 2012-08-18 09:57:15 · 8444 阅读 · 0 评论 -
[测试]关于一维数组和二维数组与指针的某些关系
#includeint main(){ int a[3][4]={11,12,13,14,15,16,17,18,19,110,111,112}; int s[5]={111,222,333,444,555}; printf("sizeof(a):%d\n",sizeof(a)); printf("sizeof(a[0]):%d\n",sizeof(a[0])); pr原创 2012-07-31 15:36:50 · 6236 阅读 · 0 评论 -
[心得]C语言中实现密码输入 回显星号*
C语言为密码输入提供了一函数getpass();#include #include int main(){ char *password; password = getpass("Input password:"); printf("The password is: %s\n",password); return 0;}但是输入的时候不显示任何信原创 2012-08-18 10:31:57 · 13514 阅读 · 1 评论 -
[心得]指针参数是如何传递内存的
首先我们知道用函数实现交换数据可以使用指针和引用实现。但是在函数中为形参中的指针申请的内存主函数中是否可以使用。写个Demo试一下:#includevoid GetMemory(char *p,int num){ p=(char *)malloc(sizeof(char) *num);}int main(){ char *str=NULL; GetMemory(原创 2012-07-31 13:51:20 · 4084 阅读 · 0 评论 -
C——定义与声明
声明一个变量只是将变量名标识符的有关信息告诉编译器,使编译器“认识”该标识符,但是声明并不一定引起内存的分配!有两重含义:1.告诉编译器,这个编译器已经匹配到一块内存上了。2.告诉编译器,这个名字已经被预订了,别的地方不能用它来作为变量名或对象名。 定义:就是创建一个对象,为这个对象分配一块内存并给它娶一个名字,也就是对象名或变量名。一个变量或对象在一定的区域中只能被定义一原创 2012-09-10 21:37:39 · 5467 阅读 · 0 评论 -
LDD3源码分析之poll分析
LDD3源码路径:examples/scull/pipe.c examples/scull/main.c本文分析LDD3第6章的poll(轮询)操作。要理解驱动程序中poll函数的作用和实现,必须先理解用户空间中poll和select函数的用法。本文与前面的文章介绍的顺序有所不同,首先分析测试程序,以此理解用户空间中的poll和select函数的用法。然后再分析驱动程序怎样对用户转载 2013-07-18 16:17:47 · 733 阅读 · 0 评论