标识符的分类

标识符(identifier)是标识某个实体的符号,是程序员给变量、常量、函数、语句块等起的名字。

标识符只能由字母、数字和下划线组成,且不能以数字开头。

C语言的标识符可以分为三类。

1.关键字

关键字(Keyword)指编程语言标准中规定好的具有固定含义的词汇,如int、if、else、for等都是关键字。这些关键字不能用作变量名、函数名或任何其他标识符的名称。

2.预定义标识符

预定义标识符(Predefined Identifiers)是由系统预先定义的一些有特定含义的标识符。主要分为:

(1)库函数名:printf、scanf等。

(2)预编译处理命令:在编译之前,由预处理器(Preprocessor)执行的指令,如define、include等。

(3)系统类库名:指库文件的名称,如stdio、stdlib、iostream。

(4)系统常量名:预先定义在头文件中的宏常量,通常为数学常量、物理常量或其他与特定库或框架相关的常量,如NULL(空指针)、M_PI(π)。

(5)预定义宏(也称内置宏):预定义宏是编译器预先定义好的宏,具备特定的功能,不需要用户使用#define定义就可以直接使用。预定义宏通常以“__”(两条下划线)开头的大写字母命名。如__LINE__(当前源代码的行号)、__FILE__(当前源代码的文件名)等。

系统常量和预定义宏的区别在于:前者相当于类对象宏(把宏替换为具体的值),后者相当于类函数宏(把宏替换为一段可带参数的代码)

预定义标识符和关键字的区别在于,用户可以重新定义预定义标识符另作他用,但这将失去预先定义的原意,所以不应随便更改这类标识符。举个例子:

#include<stdio.h>
int main(){
    int scanf=9527;
    printf("%d\n", scanf);
    return 0;
}

这个代码可以正常运行,但此时scanf已经被咱们定义为变量,如果再用它读取用户输入就会报错了。比如:

#include<stdio.h>
int main(){
    int scanf=9527;
    scanf("%d", &scanf); //读取输入出错
    printf("%d\n", scanf);
    return 0;
}

编译时提示错误:

error: called object 'scanf' is not a function or function pointer('scanf'不是函数或函数指针)

关键字则是用户不能更改、重新定义的。

所以可以这样说,对于系统定义好的标识符,除了关键字,都是预定义标识符。

3.用户标识符

指由用户根据需要定义的标识符。一般是给变量、函数、数组或文件等命名。只要不与前两种标识符重名,符合标识符的命名规则,咱们爱起啥名起啥名。比如给变量起名u2b、ndy、yyds。但是也不要太任性,命名时还应注意尽量做到“见名知义”,这样有利于提高程序的可读性和可维护性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金创想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值