上一页 1 ··· 5 6 7 8 9 10 11 12 13 14 下一页
摘要: 转自:http://www.ibm.com/developerworks/cn/aix/library/au-spunix_sharedmemory/index.htmlMartin Streicher, 软件开发人员, Pixel, Byte, and CommaMartin Streicher 是一位 Ruby on Rails 的自由开发人员和 Linux Magazine 的前任主编。Martin 毕业于 Purdue University 并获得计算机科学学位,从 1986 年起他一直从事 UNIX 类系统的编程工作。他喜欢收集艺术品和玩具。简介:UNIX® 提供多种进程间 阅读全文
posted @ 2010-12-17 23:49 Socrates 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 2.6 void类型类型void代表变量中没有值。因此,你不能使用此类型来声明变量或常量。在以下场景,可以使用void类型。2.6.1 函数声明中的void没有返回值的函数具有void类型,例如,标准函数perror()以如下形式声明:void perror ( const char * );函数参数列表中的void表示此函数没有参数:FILE *tmpfile( void ); 因此,当你试图做类似tmpfile(“name.tmp”)的函数调用时,编译器将报错。如果函数声明时参数列表中没有使用void,C编译器将不知道关于函数参数的任何信息,因此,可能判断不出函数调用是否正确。2.6.2 阅读全文
posted @ 2010-12-12 00:23 Socrates 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 2.5 枚举类型 枚举为你在程序中定义的整型,枚举的定义以关键词enum开头,可能紧跟着一个标识符,且包含一系列可能的类型值,并且每一个均具有名子: enum [identifier] {enumerator-list};下面的例子定义枚举类型enum color: enum color {black, red, green, yellow, blue, white = 7, gray};标识符color 为枚举的标签,列表中black, red等标识符为枚举常量,类型为int,你可以使用这些常量,例如在switch-case语句中。 枚举类型中的每一个枚举常量代表一个特定的值,它们可以由在列 阅读全文
posted @ 2010-12-12 00:18 Socrates 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 2.4 复数的浮点类型(C99) C99支持数学运算中的复数。1999年标准介绍了复数浮点类型及提供复数函数的扩展数学库,这些函数声明在complex.h中,包含例如三角函数csin(),ctan()等等。 一个复数z可以在笛卡儿坐标系中使用z=x + y*i表示,其中x和y为实数,i是一个虚构的单位,以以下等式定义:i2 = -1。x 称做z的实数部分,y 称做z的虚数部分。 在C中,一个复数由一对浮点值来做为它的实数部分和虚数部分,两部分具有相同的数据类型,为float、double或long double,因此,有三类的复数浮点类型:l Float _Complexl Double _. 阅读全文
posted @ 2010-12-12 00:12 Socrates 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 2.3 浮点类型 C也支持特殊的数字类型,计算中使用的标准浮点类型(实数)如下所列:l Folat定义单精度变量l Double定义双精度变量l Long double定义扩展精度变量 一个浮点值能被以有限的精度存储,这取决于表示它的二进制格式和存储它使用的内存的大小,精度以有效数的个数来表示,例如”精度为6个小数位”或”6位精度”的意思是此类型的二进制表示足够精确,可以存储一个具有6个小数位的实数。小数点的位置没有关系,并且小数据点前后的0不计算在这6个数中,数值123,456,000和0.00123456都可存储在一个6位精度的类型中。 在C中,浮点型运算在内部被当做double或更高的精 阅读全文
posted @ 2010-12-11 22:23 Socrates 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 具有精确宽度的整数类型整数类型的宽度定义为表示此整型值所使用的位的个数,包括符号位,典型的宽度有8、16、32、64位。例如,int类型的宽度至少为16位。在C99中,头文件stdint.h定义了整数类型的宽度,这些类型列举在Table 2-5.中,其中以u开头的表示unsigned.下表中不是C99要求必须提供的使用”optional”标记。 Table 2-5. Integer types with defined width类型含义执行intN_tuintN_t宽度为N位的整型optionalInt_leastN_tUint_leastN_t宽度至少为N位的整形要求N=8、16、32、6 阅读全文
posted @ 2010-12-08 22:46 Socrates 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 整数类型有五种带符号整数类型,其中多数可以由几个近义词指定,如下表Table 2-1Table 2-1. Standard signed integer types类型同义词Signed charIntSigned,signed intShortShort int, signed short,signed short intLongLong int, signed long, signed long intLong long (C99)Long long int, signed long long, signed long long int对于表Table 2-1中每一个有符号整形类型,存在个 阅读全文
posted @ 2010-12-08 00:33 Socrates 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 第一章 类型程序必须存储和处理不同种类的数据,如整型和浮点数,编译器需要知道给定的数值所代表的数据类型是什么。在C中,术语”对象”为内存中的一块位置,它的内容代表值,对象也叫做变量,一个对象的类型决定了此对象在内存在所占有的空间大小和它可能的取值范围。例如:相同模式的比特位可以完全表示不同的整形,这取决于数据对象是否被解释为有符号数。2.1 类型学C中的类型可以分为以下几类:l 基础类型标准和扩展整数类型复杂浮点类型l 枚举类型l Void类型l 派生类型² 指针类型² 数据类型² 结构类型² 联合类型² 函数类型基本类型和枚举类型一起组成了算 阅读全文
posted @ 2010-12-05 19:31 Socrates 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 1.7.2 符号 符号可以为任意一个关键字、标识符、常量、字符串、标点符号、函数、操作符、两字母词等符合语法规则的表达式,如下C语句报含5个符号: printf("Hello, world./n");单独的符号为: printf ( "Hello, world./n" ) ; 符号被预编译器在翻译的第三阶段解释,与第七阶段编译器解释符号仅有一点不同:l 对于#include指示符,预处理理器认可<filename>和”filename”两种模式;l 在预处理阶段,字符常量和字符串不会由源字符集转化为执行时字符集;l 与编译阶段不同,预处理器不 阅读全文
posted @ 2010-12-05 17:52 Socrates 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 1.1 C编译器如何工作一旦你使用一个文本编辑器写了一个C源文件,你可能会调用一个C编译器将它翻译成机器码,编译器运转在一个包含有源文件和所有通过#include指示符引用进来的头文件的翻译单元中,如果编译器在翻译单元中没有发现错误,它将生成含有机器码的目标文件,目标文件常使用后缀.o或者.obj命名,另外,编译器可能也会生成一个汇编程序列表。目标文件也叫做模块,一个库,例如C标准库,包含已经编译的、可以立即使用的标准函数模块。编译器翻译C代码中的每一个翻译单元,每个包含任何头文件的源文件将生成一个独立的目标文件,然后编译器调用连接器,它会将目标文件、使用到的库函数合并成一个可执行程序,Fig 阅读全文
posted @ 2010-12-04 00:32 Socrates 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 标识符范围 标识符的范围即程序所能“看到”标识符的部分,范围的类型通常由你声明变量的地方决定(除过标签,它往往具有函数范围),下面是四种可能的范围:文件域: 如果你在所有的程序块和参数列表这外声明了一个标识符,那么它将具有文件域,声明之后在任意地方使用它直到翻译单元结束。 块域: 除过标签,在块中声明的标识符具有块域,你只能在声明它的最小块域中使用它,最小块域通常为一个函数的函数体,在C99中,声明不必放在函数块的最前面,在一个函数中定义的参数名也具有块域,在函数体中有效。函数原型域:函数原型中的参数名具有函数原型域,因为这些参数名在原型外没有意义,它们往往用做注释,可被忽略。 函数域:标签的 阅读全文
posted @ 2010-12-04 00:26 Socrates 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 1.1.1 标识符的命名空间 所有的标识符均可归属于以下四个分类之一,它们组成了命名空间:l 标签名;l 标记,用于识别结构体、联合体和枚举类型;l 结构体或联合体的成员名,每个结构体或联合体为它的成员构成了一个独立的命名空间;l 其他标识符,即普通标识符; 属于不同命名空间中的相同标识符不会引起冲突,换句话说,你可以使用相同的标识符来标识不同的对象,只要它们属于不同种类,例如,编译器有能力区分一个变量和一个标签,尽管它们的名称相同。同样地,你也可以给一个结构类型、结构中的一个成员、一个变量取相同的名子,如下例子所示: struct pin { char pin[16]; /* ...... 阅读全文
posted @ 2010-12-03 00:19 Socrates 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 1.1 标识符 标识符是指C程序中的变量、函数、宏、结构和其他对象的名称,标识符可以包括下面的字符:l 基本字符集中的字母, a-z 和 A-Z, 标识符是大小写敏感的;l 下划线字符,_;l 数字,0-9,但首字符不能为数字;l 通用字符用来表示其他语言中的字母和数字;被允许的通用字符定义在C标准的附录D中,与ISO/IEC TR 10176标准中的字符相符。 标识符中也允许使用多字节字符,但是要由C执行程序运行环境来决定哪些多字节字符可以使用。 下面37个关键词为C语言保留,在编译器中有其他意义,不能被用做标识符: Auto Enum Restrict Unsigned Break Ext 阅读全文
posted @ 2010-12-02 00:26 Socrates 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 通用字符名 C也支持通用字符名来使用扩展字符集,使用通用字符名,你可以指定任何扩展字符,它的Unicode值如下形式: /uXXXX 或者: /UXXXXXXXX其中,XXXX或XXXXXXXX为16进制的Unicode指针符号,使用小写字母u做为前缀,后面为四个十六进制数字,或者大写字母U,后面为8个十六进制数字. 如果前四个十六进制数字为0,则也可以写作/uXXXX或者/U0000XXXX。 通用字符名可以用来表示标识符、字符常量、字符串,但是,不能用来表示基本字符集中的字符。 当你使用通用字符名来表示一个字符,编译器将它存储在字符集中,以便执行时使用。例如,如果执行时字符集在一个本地化程 阅读全文
posted @ 2010-12-01 00:25 Socrates 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 1.1.1 宽字符和多字节字符 C语言最初是在英文环境下发展而成,所以最初使用的是7位的ASCII编码字符集,其后,8位的字节变成最普遍的字符编码单位,但软件的国际化因素要求不能仅使用一个字节的字符编码方式,大量的不同与拉丁字母的多字节编码模式早已存在数十年,例如汉字、日文、韩文等。1994年,ISO C标准组织在“标准化附录1”中定义了两种大字符集:宽字符和多字节字符(一个字符可以使用一个或多个字节表示)。 自从1994年的附录开始,C不仅提供char类型,而且还提供宽字节字符wchar_t,这种类型定义在头文件stddef.h中,此文件足够大,以至于可以表示任意扩展字符集。 尽管C标准没有 阅读全文
posted @ 2010-12-01 00:17 Socrates 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 1.1 字符集C将编译器编译源代码的环境(即:编译环境)和编译好的程序运行所依赖的环境(即:运行环境)区别对待,所以,C定义了两种类型的字符集,源文件中使用的称做源字符集,执行程序使用的称做执行时字符集。在一些C的实现的,两种类型是一样的,如果不同,编译器会将其转化为执行时字符集。每种字符集均包含基本字符集和扩展字符。C没有指定扩展字符,这些通常由本地语言来决定,扩展字符和基本字符集一起构成了扩展字符集。基本字符集和扩展字符集都包括下面的字符类型:拉丁字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Za b c d e f g h i 阅读全文
posted @ 2010-11-30 00:19 Socrates 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 1.1 注释在源码中应该使用注释来说明程序,在C语言中,有两种插入注释的方法:块注释使用“/*”表示 开始,“*/”表示结束;行注释使用“//”开始,直到此行结尾。你可以使用分割符/*和*/在一行中开始和结束注释,并可以嵌套注释在多行中,例如,在下面的函数原型中,省略号(…)表示open()函数有第三个可选参数,注释解释此参数的使用方法:int open( const char *name, int mode, ... /* int permissions */ ); 你可以使用//来插入完整的一行注释,或者将代码和注释写于一行中,代码位于左,注释位于右边:const double pi = 阅读全文
posted @ 2010-11-29 00:06 Socrates 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 1.1 源文件 函数定义、全局声明、预处理符一起组成了C程序的源码,对于小程序,源代码写在一个文件中,大点的C程序包含多个源文件,由于函数定义通常依赖预处理符和全局声明,所以源文件通常有以下内部结构:1. 预处理符2. 全局声明3. 函数定义 C支持模块化编程,允许由多个文件组织一个程序,并且可以分别编辑、编译,互不影响。每个源文件通常包含逻辑上有关系的函数,并且通常由文件名来自说明此文件的内容。Examples 1-2 和 1-3 与Example 1-1 中的程序相同,但是分开在两个源文件中定义。Example 1-2. 第一个源文件,含有main()函数// circulararea.c 阅读全文
posted @ 2010-11-29 00:01 Socrates 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 1.1 C的结构 组成C程序的“积木”叫做函数,每个函数都有自己的用途,并且可以相互调用。每个函数包含可被执行的语句,而这些语句可以分组,从而形成语句块。做为程序员,你可以直接使用C标准库的的函数,也可以自己编写函数来实现既定目的。除此之外,还有很多专用的库可以使用,例如图形函数库。然而,使用这些非标准库,会限制了程序的可移植性,因为它必须运行在支持此类库的系统之上。 每个C程序必须定义至少一个函数,而且均有一个名称为main()函数,此函数在程序开始运行时首先被调用,然后由它来调用子函数。 Example 1-1为一个简单但完整的C程序,在本书中,我们将讨论声明、函数调用、输出流等细节,目前 阅读全文
posted @ 2010-11-28 23:55 Socrates 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 第一部分 语法第一章 基础语法本章节描述C语言的基本原理及特征。1.1 C的特征 C是一种有各方面用途的过程语言。Dennis Ritchie 在1970年在新泽西州的贝尔实验室首次设计了C语言,目的是为实现UNIX操作系统及其应用能够最大程度与特定的硬件分离。C语言的关键特性如下所述:l 轻便的源码l 操作硬件的能力l 高效 所以,UNIX开发者可以使用C语言编写操作系统的绝大部分,仅有很少的一些操作特有硬件部分由汇编而写。 C的前身是Martin Richards发明的无类型编程语言BCPL (the Basic Combined Programming);而由Ken Thompson发明 阅读全文
posted @ 2010-11-28 23:43 Socrates 阅读(188) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 14 下一页