C 笔记一

define

define是C语言中的预处理命令,它用于宏定义,可以提高源代码的可读性,为编程提供方便。
所谓预处理是指在进行编译之前所作的工作。预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。

不带参数的宏:

1
2
3
#define LENGTH 10

int arr[LENGTH] = {0}; // 表示定义了一个长度为 10 的整形数组

在预处理阶段,会把 LENGTH 替换成 10,所以 10 后面不能有 ;

带参数的宏:
C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#define MAX(a, b) (a > b ? a : b)

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
3
typedef 原始类型 新名字;

typedef int newInt;

上面的例子,我们给 int 定义了别名 newInt,那么在后面的程序中,就可以使用 newInt 来定义变量了。

使用 typedef 声明类型可以减少复杂的什么,尤其是 structunion 这些声明比较长的类型。

1
2
3
4
5
6
7
8
typedef 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

坚持原创技术分享,您的支持将鼓励我继续创作!
Flyertutor WeChat Pay

WeChat Pay

Flyertutor Alipay

Alipay