标识符(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。但是也不要太任性,命名时还应注意尽量做到“见名知义”,这样有利于提高程序的可读性和可维护性。
标签:定义,scanf,分类,关键字,预定,标识符,常量 From: https://blog.csdn.net/jjmhx/article/details/139180363