标识符
Posted hxlinux
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了标识符相关的知识,希望对你有一定的参考价值。
标识符命名规则
标识符(identifier)用于引用变量,函数,宏,结构以及其他在C程序中定义的对象。标识符包括:
(1)基本字符集的字母,a-z与A-Z(标识符区分大小写)
(2)下划线_
(3)数字0-9(不能作为标识符的第一个字符)
(4)代表其他语言字母和数字的通用字符名
在C语言标准中的AnnexD部分,定义了合法的通用字符,等同于ISO/IEC TR 10176标准所定义字符减去基本字符集。
标识符中也可以使用多字节字符。具体使用方法由该实现版本决定。
c语言保留了44个关键字,每个都有特殊意义,不可以用作标识符。关键字详解
标识符命名空间
任何标识符都可以归属于:
(1)标签名(lable)
(2)标识(tag),用来标识结构,联合(union)与枚举(enumeration)类型
(3)结构或联合中的成员名称(每个结构或联合都为其成员创建了一个独立的命名空间)
(4)普通标识符
这四种构成了独立的命名空间(namespace),两个名称相同但是命名空间不同的标识符不会造成冲突
标识符的作用域
作用域就是标识符存在作用的范围,作用域的类型声明由声明标识符的位置决定(标签标识符除外)作用域有四个类别:
1.文件作用域(file scope)
如果声明标识符的地方位于所有语句块和参数列表之外,那么该标识符就拥有文件作用域。可以在声明后的任何地方,直至翻译单元结束之前,使用该标识符
2.块作用域(block scope)
除标签之外,在语句块内声明的标识符具有块作用域。这样的标识符只能从其声明处到包含该声明的最小语句块结尾处的范围内使用。最小包含语句块常常是某个函数的定义部分,从c99后,声明不一定要放在函数体内所有的语句之前。在一个函数定义头部的参数名称,也具有块作用域,其在整个函数体内都有效。
3.函数原型作用域(function prototype scope)
函数原型中参数名具有函数原型作用域。这些参数名在原型外没有任何意义,只用于注释。
4.函数作用域
一个标签的作用域一定是在该标签所处的函数体内,即使它被放到嵌套语句里面
以上是关于标识符的主要内容,如果未能解决你的问题,请参考以下文章