define
define是C语言中的预处理命令,它用于宏定义,可以提高源代码的可读性,为编程提供方便。
所谓预处理是指在进行编译之前所作的工作。预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。
不带参数的宏:1
2
3
int arr[LENGTH] = {0}; // 表示定义了一个长度为 10 的整形数组
在预处理阶段,会把 LENGTH
替换成 10,所以 10 后面不能有 ;
。
带参数的宏:
C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
int x, y, max;
printf("input two numbers: ");
scanf("%d%d", &x, &y);
max = MAX(x, y); // 这里在预处理完之后替换为 max = (x > y ? x : y);
printf("max=%d\n", max);
return 0;
}
typedef
C 语言有一种机制,就是允许给各种数据类型定义新的名字,也可以说是别名,使用关键字 typedef
来声明。他的用法如下:1
2
3typedef 原始类型 新名字;
typedef int newInt;
上面的例子,我们给 int
定义了别名 newInt
,那么在后面的程序中,就可以使用 newInt
来定义变量了。
使用 typedef
声明类型可以减少复杂的什么,尤其是 struct
和 union
这些声明比较长的类型。1
2
3
4
5
6
7
8typedef struct Student{
int id;
char name[20];
int age;
} Student_t;
// 声明变量
Student_t stu, *s;
const
在 C 语言中,可以定义常量,使用关键字 const
,常量的值是不能修改的,由于其值无法修改,所以在程序中无法将任何值赋值给他。那么他怎么能有值呢?
方法一:声明时进行初始化1
const int PI = 3.14;
方法二:const 声明形参在调用时会得到实参的值。
static
如果在变量前面加上这个关键字,指定为静态变量,分配在静态变量区,那么变量将视为这个源文件私有,其他文件不能使用,如果其他文件中出现同名的变量,也是不同的变量。1
static int height;
如果在函数前面加上这个关键字,指定函数作用域为文件内部,那么这个函数只能在当前源文件中调用,防止其他源文件调用。1
static void swap(int *a, int *b);
extern
如果在变量前面加这个关键字的话,表名这个变量不管在几个源文件中调用,都是同一个实体。
return
用于函数体中,返回值。
©版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 & 作者信息。
End