top/contents search

术语表

这些定义是关于本列表所用术语的。其中一些术语有更正式的定义,略有不同。许多术语来源于ANSI/ISO C标准;请参阅ANSI 第1.6节或ISO 第3节。

聚合体 (aggregate)
n. 数组或结构类型。adj. 指示此类类型。
实际参数 (actual argument)
参见 参数 (argument)
别名 (alias)
n. 对某个对象的引用(通常以指针形式),该对象也通过其他引用(即其自身名称或其他指针)已知。vt. 创建此类引用。
ANSI
n. 美国国家标准学会。adj. 非正式地用于指代标准C;参见问题 11.1
参数 (argument)
n. 在函数调用或类似函数的宏调用期间,在参数列表中传递的值。通常强调“实际参数”。与 形参 (parameter) 比较。
argv
n. 传递给main()的命令行参数数组(“向量”)的传统名称;参见问题 11.12b20.3
算术 (arithmetic)
adj. 指可以执行常规算术运算的类型或值。C语言中的算术类型包括 整数类型 (integral types)(见下文)和浮点类型(float, double,而long double).
ASCII
n.,adj. 美国信息交换标准代码,ANSI X3.4-86。
赋值上下文 (assignment context)
n. 表达式上下文,可以识别为赋值或转换为已知类型的目标。C语言中的赋值上下文包括初始化、赋值表达式的右侧、类型转换、return语句以及原型存在时的函数参数。
自动 (automatic)
adj. (常作“自动存储期”。)指一个对象,其存储在进入函数(或嵌套块)时自动分配,并在从函数返回(或退出块)时自动释放。换句话说,指局部、非静态变量(相对于全局变量或函数内外的静态变量)。与 静态 (static)(第一种含义)比较。参见问题 1.30
大端序 (big-endian)
adj. 指多字节量以最高有效字节在最低地址存储。另请参见 字节序 (byte order)
二进制 (binary)
adj. 1. 以二为基数。2. 指以字节为单位或位为单位进行的I/O,不进行格式化或解释,即内存内部与外部存储之间的直接复制操作。3. 指要解释为原始字节序列的文件,其中任何字节值都可能出现。与 文本 (text) 比较。参见问题 12.3812.4020.5。4. 指接受两个操作数的运算符。与 一元 (unary) 比较。
绑定 (bind)
vt,vi. 非正式地,“固定”或“捆绑”;通常用于根据优先级规则指示哪个操作数与哪个运算符相关联。
位掩码 (bitmask)
n. 一个 掩码 (mask),第一种含义。
字节 (byte)
n. 一个可以容纳一个字符的存储单元。与 八位字节 (octet) 比较。参见问题 8.10。参见ANSI第1.6节或ISO第3.4节。
字节序 (byte order)
n. 多字节量(通常是整数)在内存、磁盘或网络或其他按字节I/O流中的特征排序。两种常见的字节序(最高有效字节在前和最低有效字节在后)通常称为 大端序 (big-endian)小端序 (little-endian)(见下文)。
规范模式 (canonical mode)
n. 终端驱动程序 (terminal driver) 的模式,在该模式下,输入按行收集,允许用户使用退格/删除/擦除或其他键纠正错误。参见问题 19.1
.c 文件 (.c file)
n. 一个 源文件 (source file),第二种含义。(参见问题 1.710.6。)
类型转换 (cast)
n. 语法
	( type-name )
其中类型名称 (type-name) 是一个类型名称,例如intchar *;用于指示将值显式转换为另一种类型。vt. 使用类型转换来转换值。
符合 (conforming)
adj. 1. 指一个实现(编译器或其他语言处理器)可以接受任何 严格符合 (strictly conforming)(见下文)的程序。2. 指一个符合实现的程序。(参见ANSI第1.7节或ISO第4节。)
cpp
n. 实现C预处理器功能的独立程序的传统名称。
衰变 (decay)
vi. 经过隐式转换,变成一个类型稍有降低的值。非正式地说,数组和函数在C语言中倾向于衰变成指针。参见问题 6.31.34
声明 (declaration)
n. 1. 通常,一个语法元素,它描述一个或多个变量、函数、结构、联合或枚举的名称和类型。2. 更具体地说,这种描述指向一个变量或函数,该变量或函数的 定义 (definition) 在别处。参见问题 1.7
声明符 (declarator)
n. C语言声明的“后半部分”,包括一个标识符名称以及可选的*, []()语法,指示(如果存在)该标识符是指针、数组、函数或它们的某种组合。参见问题 1.21
定义 (definition)
n. 1. 一个变量或函数的 声明 (declaration),它分配存储并(在变量的情况下)可选地初始化,或(在函数的情况下)提供函数体。在这种意义上的定义与 声明 (declaration)(第二种含义)相反。参见问题 1.7。2. 对结构、联合或枚举类型的声明,它描述类型(并通常分配一个 标签 (tag)),而不必定义该类型的任何变量。3. 预处理器的#define指令。
解引用 (dereference)
vt. 查找一个引用的值。通常,“引用的值”是指指针指向的值,因此“解引用指针”仅仅意味着查看它指向什么(在C语言中,使用一元*运算符或“数组下标”运算符[])。有时,也可能指获取*任何*变量的值。另请参见 间接 (indirect)
多功能向量 (dope vector)
n. 一个数组(或指针模拟的数组),它仅仅由指向其他数组(或其他指针模拟的数组)的指针组成。另请参见 不规则数组 (ragged array)。参见问题 6.1620.2
端序 (endianness)
n. 字节序(q.v.)。
外部 (external)
n. 一个被某些源文件(或目标模块)引用但未定义的函数或变量。当链接器在找不到定义时打印“未定义外部”的错误消息时,经常会看到这个词。
字段 (field)
n. 1. 宽松地讲,结构或联合的一个成员。(一个无歧义的术语是 成员 (member)。)2. 特别地,一个位域(参见问题 2.25)。
形参 (formal parameter)
n. 参见 参数 (parameter)
独立环境 (freestanding environment)
一个不支持C库的C环境;一个用于嵌入式应用程序等的环境。与 宿主环境 (hosted environment) 比较。(参见ANSI第1.7节或ISO第4节。)
FSF
n. 自由软件基金会。
FTP
1. n. 互联网文件传输协议。2. vt. 通过FTP传输文件。
完整表达式 (full expression)
构成表达式语句的完整表达式,或者一个控制表达式(如if, switch, while, 对于do/while语句),或者初始化器或return语句中的表达式。一个完整表达式不是更大表达式的一部分。(参见ANSI第3.6节或ISO第6.6节。)
函数指针 (function pointer)
n. 指向任何函数类型的指针。与 对象指针 (object pointer) 比较。
gcc
n. FSF的GNU C编译器。
GNU
n. FSF的“GNU不是Unix!”项目。
.h 文件 (.h file)
n. 一个 头文件 (header file)
头文件 (header file)
n. 一个包含声明和某些定义的文件,但*不*包含函数体或全局变量定义,通过预处理中的#include指令合并到 翻译单元 (translation unit) 中。与 源文件 (source file) 比较。参见问题 10.6
H&S
C: A Reference Manual,作者Samuel P. Harbison和Guy L. Steele, Jr.(请参见参考文献以获取完整引用)。
宿主环境 (hosted environment)
一个也支持C库的C环境。与 独立环境 (freestanding environment) 比较。(参见ANSI第1.7节或ISO第4节。)
幂等 (idempotent)
adj. 作用完全一次;如果重新应用则无害。在C语言中,通常指头文件;参见问题 10.711.21
标识符 (identifier)
n. 一个名称,通常在特定的 命名空间 (namespace)作用域 (scope) 中有意义。参见问题 1.29
实现 (implementation)
n. 编译器或其他语言翻译器,连同其运行时库。用于构成,如“普通的char是带符号还是无符号是依赖于实现的”和“这些标识符保留给实现使用”。
依赖于实现 (implementation-defined)
adj. 指行为未被标准完全规定,但要求由特定实现定义和记录的行为。示例:普通的char是带符号还是无符号。参见问题 11.33
#include文件 (file)
n. 一个 头文件 (header file)
不完整类型 (incomplete type)
n. 一个未完全指定的类型,但仍可在某些上下文中使用的类型。示例:无量纲数组;具有标签但没有成员信息的结构或联合类型。(参见ANSI第3.1.2.5节或ISO第6.1.2.5节。)
带内 (in-band)
adj. 指一个哨兵值,该值在它出现的数值集合中不总是唯一的。与 带外 (out-of-band) 比较。示例:CP/M或MS-DOS的Ctrl-Z文件结束标记。参见问题 12.40
间接 (indirect)
vi. 应用一个间接层。例如,“在指针上间接”意味着跟踪指针指向的位置(而不是仅仅发现指针的值)。另请参见 解引用 (dereference)
int
n. 通常匹配机器自然字大小的整数类型,该类型最常用于(在某些情况下为默认)表示C语言中的整数。
整数 (integer)
n. 某个大小的整数(可能是shortlong),不一定是普通的int.
整数 (integral)
adj. 指可以表示整数的类型。C语言中的整数类型包括char、三种大小的int (short、普通以及long), signedunsigned所有这些类型的变体,以及枚举。
ISO
国际标准化组织。
K&R
n. 1. 书籍The C Programming Language(请参见参考文献以获取完整引用)。2. 该书的作者,Brian Kernighan 和 Dennis Ritchie。adj. 指书中第一版(“K&R1”)描述的早期C版本。
lhs
n. 左侧,通常是赋值的左侧,或更一般地,任何二元运算符的左侧。
lint
n. Steve Johnson编写的程序,作为其pcc的配套程序,用于执行跨文件和其他C编译器通常不执行的错误检查。据说该名称来源于它从程序中剔除的细微之处。vt. 用lint.
小端序 (little-endian)
adj. 指多字节量以最低有效字节在最低地址存储。另请参见 字节序 (byte order)
左值 (lvalue)
n. 最初,一个可以出现在赋值运算符左侧的表达式,因此,是可以被赋值的东西。更精确地说,是一个有位置的东西,而不是一个瞬时值。在赋值
	a = b;
a是左值,它不被读取,而是被写入。与 右值 (rvalue) 比较。另请参见问题 6.7。参见ANSI第3.2.2.1节(尤其是脚注31)或ISO第6.2.2.1节。
掩码 (mask)
1. n. 一个整数值,专门用作用于执行按位运算(&, |等)的1和0的模式。2. vt. 使用掩码(第一种含义)和按位运算符选择某些位。参见问题 20.7
成员 (member)
n. 结构或联合的其中一个带类型的组件。
命名空间 (namespace)
n. 一个名称(标识符)可以被定义的上下文。C语言中有几个命名空间;例如,普通标识符可以与结构标签具有相同的名称,而不会产生歧义。参见问题 1.29
窄化 (narrow)
adj. 指在默认参数提升下被提升的类型(char, shortfloat)。参见问题 11.315.2
不可重入 (nonreentrant)
adj. 指一段代码使用了静态内存,或者处理的数据结构暂时处于不一致状态,因此不能在另一个实例正在活动时安全调用(也就是说,不能从中断处理程序调用,因为它可能是被中断的代码)。
``notreached''
感叹词。指示lint或其他程序检查器,控制流无法到达某个点,因此应抑制某些警告(例如,“函数末尾的控制没有return'”)。参见问题 11.12b
空指针 (null pointer)
n. 一个特殊的指针值,它不是任何对象或函数的地址。参见问题 5.1
空指针常量 (null pointer constant)
n. 一个值为0的整数常量表达式(或该表达式被转换为void *),用于请求一个 空指针 (null pointer)。参见问题 5.2
O(n)
adj. 一种表示算法“阶”或计算复杂度的记法。O(n) 算法花费的时间大致与操作项的数量成正比。O(n**2) 算法花费的时间与项数量的平方成正比,等等。
对象 (object)
n. C程序可以操作的任何数据片段:一个简单的变量,一个数组,一个结构,一块malloc分配的内存,等等。另请参见 对象指针 (object pointer)
对象指针 (object pointer)
n. 指向任何对象或不完整类型的指针。与 函数指针 (function pointer) 比较。
八位字节 (octet)
n. 一个8位量。与 字节 (byte) 比较。
不透明 (opaque)
adj. 指一个旨在抽象的数据类型:使用该类型的代码不应了解该类型的实现方式(它是简单类型还是结构,如果是结构,它包含哪些字段)。参见问题 2.4
求值顺序 (order of evaluation)
n. 表达式所暗示的操作实际由处理器执行的顺序。与 优先级 (precedence) 比较。参见问题 3.4
带外 (out-of-band)
adj. 指一个哨兵值或例外值,它与在某些上下文中出现的所有正常值(例如,在函数返回值集合中等)不同。与 带内 (in-band) 比较。示例EOF(参见问题 12.1)。
参数 (parameter)
n. 函数定义、类似函数的宏定义或函数原型声明中的标识符,它代表将在其中传递的实际参数。通常强调“形参”。与 参数 (argument) 比较。

在代码中
	main()
	{
		f(5);
		return 0;
	}

	f(int i)
	{
	}
的形参为fi,实际参数为5.
在片段中
	extern int g(int apple);
	int orange = 5;
	g(orange);
的形参为gapple,实际参数为orange.
引用传递 (pass by reference)
n. 一种参数传递机制,函数接收对实际参数的引用,因此如果修改它,它会修改调用者中的值。C语言不支持(参见问题 4.11)。
值传递 (pass by value)
n. 一种参数传递机制,函数接收实际参数的副本,因此如果修改它,它只会修改自己的副本(并且不影响调用者中的值)。C语言总是使用值传递。参见问题 4.87.214.11
pcc
n. Steve Johnson的Portable C Compiler,最初于1978年左右为PDP-11编写(作为Dennis Ritchie的cc的替代品)。pcc在Unix 32V和BSD项目中被重新定向到VAX,并得到了*广泛*的分发,并成为大量C编译器的基础。与K&R1一样,它在X3J11开始工作之前,多年来一直是C的*事实上的*定义。(请注意,问题 18.3 中提到的PCC可能与之无关。)
优先级 (precedence)
n. 运算符的“强度”,表示它在解析过程中与操作数的结合紧密度,特别是与其他附近的运算符相比。优先级与结合性和显式括号一起决定了表达式的解析方式:哪些运算符应用于哪些操作数,哪些子表达式是哪些运算符的操作数。优先级不一定说明 求值顺序 (order of evaluation)(见下文);参见问题 3.4
预处理器 (preprocessor)
n. 编译器的一部分(传统上是一个独立的程序;因此得名),负责处理#include, #define, #ifdef和相关指令,并在程序的其余部分执行宏替换。#defined 宏。
指针上下文 (pointer context)
n. 一个表达式上下文,其中可以识别出需要指针值。C语言中的指针上下文包括

(1)任何 赋值上下文 (assignment context)(见下文),其中目标(左侧)具有指针类型;

(2)一个==!=比较,其中一侧具有指针类型;

(3)在其中一个操作数为指针时,三元运算符的第二和第三个操作数;以及?:(4)指针类型转换的操作数,例如

(char *)(void *)参见问题 5.2.

变通 (pun)
vt. 试图将一个对象当作具有不同类型来处理,通常是使用联合体或形如
*(othertype *)&object的形式。.
不规则数组 (ragged array)
n. 一个数组,通常用指针模拟,其中行不一定长度相同。另请参见 多功能向量 (dope vector)。参见问题 6.1620.2
可重入 (reentrant)
adj. 指可以安全地从中断或其他可能导致代码实例同时活动的场合调用的代码。可重入代码在处理数据的方式上必须非常小心:数据要么全部是局部的,要么受信号量或类似机制保护。
RFC
n. 互联网的“请求评论”文档,可通过ftp从ds.internic.net和许多其他站点获得。
rhs
n. 右侧,通常是赋值的右侧,或更一般地,任何二元运算符的右侧。
右值 (rvalue)
n. 最初,一个可以出现在赋值运算符右侧的表达式。更一般地,任何可以参与表达式或被赋值给另一个变量的值。在赋值
	a = b;
b是右值,其值被读取。与 左值 (lvalue) 比较。参见ANSI第3.2.2.1节(尤其是脚注31)或ISO第6.2.2.1节。(另请参见问题 3.164.5。)
作用域 (scope)
n. 声明有效的区域。adj. “在作用域内”:可见。参见问题 1.29
语义 (semantics)
n. 程序背后的含义:编译器(或其他翻译器)对各种源代码构造的解释。与 语法 (syntax) 比较。
短路 (short circuit)
v. 当结果确定时过早终止表达式的求值。C语言中的短路运算符是&&, ||,而?:。对于&&||,如果第一个操作数决定了结果(对于&&为零,或对于||为非零),则第二个(右侧)操作数不被求值。对于?:,只有一个第二个或第三个操作数被求值,取决于第一个操作数的值。参见问题 3.6
副作用 (side effect)
n. 表达式或子表达式求值时发生的任何永久性事件,除了简单地产生一个值。典型的副作用包括:修改变量、打印某物。参见ANSI第2.1.2.3节或ISO第5.1.2.3节。
符号保持 (sign preserving)
adj. “无符号保持”规则的另一个名称,见下文。
源文件 (source file)
n. 1. 任何包含C源代码的文件。2. 更具体地说,一个文件名以.c结尾的文件,包含函数体和全局变量定义(可能还有其他种类的声明和定义)。与 头文件 (header file)翻译单元 (translation unit) 比较。参见问题 1.710.6
标准 (Standard)
(大写S:)n. ANSI/ISO C标准,ANSI X3.159-1989或ISO/IEC 9899:1990(参见问题 11.1)。adj. 指与该标准兼容的某物。
静态
adj. 1. (常作“静态存储期”。)指一个在程序整个生命周期都存在的对象,在程序启动时只分配和初始化一次。与 自动 (automatic) 比较。参见问题 1.30。2. 局限于一个源文件,即不是全局作用域。
严格符合 (strictly conforming)
adj. 指一个程序,它只使用ANSI/ISO C标准中描述的特性,并且不依赖于任何未指定、未定义或依赖于实现的行为。(参见ANSI第1.7节或ISO第4节。)
字符串 (string)
n. 一个char的数组,或一个malloc区域,包含以'\0'.
字符串化 (stringize)
vt. 将源代码标记转换为字符串字面量。参见问题 11.1711.18
字符串字面量 (string literal)
n. 源代码中双引号之间的一系列字符。用于初始化一个char的数组,或请求一个包含常量字符串的匿名数组(该匿名数组通常通过其衰变生成的指针进行访问)。参见问题 1.32
语法 (syntax)
n. 程序的文本:它所表达的一系列标记。与 语义 (semantics) 比较。
标签 (tag)
n. 结构、联合或枚举的(可选)名称。参见问题 2.1
标记 (token)
n. 1. 编译器或其他翻译器通常看到的最小语法单位:关键字、标识符、二元运算符(包括多字符运算符,如+=&&)、等等。2. 字符串中由空格分隔的单词(参见问题 13.6)。
翻译单元 (translation unit)
n. 编译器看到并作为一个单元翻译的源文件集合:通常是一个.c文件(即 源文件 (source file),第二种含义),加上指令中提到的所有头文件。#includedirectives.
终端驱动程序 (terminal driver)
n. 负责基于字符的输入和输出的系统软件部分,通常是交互式的;最初来自和指向串行连接的终端,现在更普遍地指任何虚拟终端,如窗口或网络登录会话。参见问题 19.1
文本 (text)
adj. 指打算处理人类可读文本的文件或I/O模式,特别是打印字符排列成行。与 二进制 (binary)(第三种含义)比较。参见问题 12.40
翻译器 (translator)
n. 解析并解释C语法语义的程序(编译器、解释器、lint等)。
一元 (unary)
adj. 指接受一个操作数的运算符。与 二元 (binary)(第四种含义)比较。
未定义 (undefined)
adj. 指行为未被标准规定,实现*不必*为此做任何合理的事情。示例:表达式的行为i = i++。参见问题 3.311.33
展循环 (unroll)
vt. 将循环体复制一次或多次(同时相应地减少迭代次数),以通过减少循环控制开销来提高效率(但会以增加代码大小为代价)。
无符号保持 (unsigned preserving)
adj. 指一组规则,在ANSI之前的实现中很常见,用于提升在二进制运算符之间相遇的带符号和无符号类型,以及提升窄的无符号类型。在无符号保持规则下,提升总是会提升为无符号类型。与 值保持 (value preserving) 比较。参见问题 3.19
未指定 (unspecified)
adj. 指行为未被标准完全规定,每个实现都必须选择某种行为,但不必记录甚至不一致。示例:函数参数和其他子表达式的求值顺序。参见问题 11.33
值保持 (value preserving)
adj. 指一组规则,由ANSI C标准规定,并在某些ANSI之前的实现中存在,用于提升在二进制运算符之间相遇的带符号和无符号类型,以及提升窄的无符号类型。在值保持规则下,如果提升为带符号类型能保留所有值,则提升为带符号类型,否则提升为无符号类型。与 无符号保持 (unsigned preserving) 比较。参见问题 3.19
varargs
adj. 1. 指接受可变数量参数的函数,例如printf。(“可变参数”的同义词。) 2. 指可变参数列表的可变长度部分中的一个参数。
可变参数 (variadic)
adj. 指接受可变数量参数的函数,例如printf。(“varargs”的同义词,第一种含义。)
包装器 (wrapper)
n. 一个“包装”在另一个函数(或宏)中的函数(或宏),提供一些附加功能。例如,一个包装malloc可能会检查malloc的返回值。
X3.159
n. 最初的ANSI C标准,ANSI X3.159-1989。参见问题 11.1
X3J11
n. ANSI负责起草C标准的委员会。X3J11现在充当ISO C标准化工作组WG14的美国技术咨询小组。参见问题 11.1

回到顶部

contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管