C语言常用关键字
1. 数据类型
-
int
:表示整型数据。 -
float
:表示单精度浮点型数据。 -
double
:表示双精度浮点型数据。 -
char
:表示字符型数据。 -
void
:表示无类型,通常用于函数返回类型。
c
int a = 10;
float b = 3.14;
double c = 5.123456;
char d = 'A';
void func(); // 声明一个无返回值的函数
2. 控制语句
-
if
:条件语句,用于执行条件为真的代码块。 -
else
:配合if
使用,处理条件为假的情况。 -
switch
:多分支选择语句。 -
case
:用于在switch
语句中定义分支。 -
default
:用于switch
语句中,当所有case
都不匹配时执行。 -
for
:用于执行固定次数的循环。 -
while
:用于执行条件为真的循环。 -
do
:与while
配合使用,用于先执行后判断的循环。 -
break
:用于退出当前循环或switch
语句。 -
continue
:用于跳过当前循环中的剩余语句,继续下一次循环。 -
return
:用于从函数中返回。
c
int x = 5;
if (x > 0) {
printf("x is positive\n");
} else {
printf("x is not positive\n");
}
for (int i = 0; i < 10; i++) {
printf("%d\n", i);
}
while (x > 0) {
printf("x = %d\n", x);
x--;
}
switch (x) {
case 0:
printf("x is zero\n");
break;
default:
printf("x is not zero\n");
}
3. 存储类
-
auto
:自动存储类型,局部变量的默认存储类型。 -
register
:建议编译器将变量存储在CPU寄存器中,而不是内存中。 -
static
:声明静态变量,变量在程序的整个生命周期内保持存在。 -
extern
:声明外部变量,指向其他文件中定义的变量。 -
const
:定义常量,变量的值不可改变。
c
auto int y = 0; // 自动存储类型,局部变量
register int z = 1; // 寄存器变量,建议存储在寄存器中
static int count = 0; // 静态变量,跨函数调用保持值
extern int g_var; // 外部变量声明,在其他文件中定义
const int MAX = 100; // 常量,值不可改变
4. 类型定义与结构体
-
struct
:定义结构体类型。 -
union
:定义共用体类型。 -
typedef
:为类型定义新的名称。 -
enum
:定义枚举类型。
c
struct Point {
int x;
int y;
};
typedef struct Point Point; // 定义新的类型名称
enum Weekday { MON, TUE, WED, THU, FRI, SAT, SUN }; // 枚举类型
5. 指针和内存
-
sizeof
:返回数据类型或变量的字节大小。 -
volatile
:指示变量可能会被外部因素修改,禁止编译器优化。 -
goto
:无条件跳转语句,通常不建议使用。
c
int *p = &x; // 定义一个指向整数的指针
int size = sizeof(int); // 获取int类型的大小
volatile int v; // 声明一个易变的变量
goto label; // 无条件跳转
label:
printf("Jumped to label\n");
6. 其他关键字
-
inline
:提示编译器将函数定义为内联函数。 -
volatile
:声明变量的值可能会被程序之外的因素改变。 -
restrict
:指示指针是唯一访问某对象的方式,用于优化。
c
inline void say_hello() {
printf("Hello, World!\n");
}
restrict int *ptr = malloc(sizeof(int) * 10); // 限制指针访问
7. 内存管理
-
malloc
:动态分配内存,返回指向分配空间的指针。 -
free
:释放由malloc
或其他内存分配函数分配的内存。 -
calloc
:分配零初始化的内存块,返回指向该块的指针。 -
realloc
:调整已分配内存块的大小。
c
int *arr = (int *)malloc(10 * sizeof(int)); // 动态分配内存
if (arr != NULL) {
free(arr); // 释放内存
}
8. 预处理指令
-
#define
:定义宏,通常用于常量或简单的代码替换。 -
#include
:引入头文件,用于包含外部定义的函数或数据类型。 -
#ifdef
/#ifndef
:条件编译,用于检查宏是否定义。 -
#endif
:结束条件编译块。 -
#undef
:取消宏定义。 -
#pragma
:特定于编译器的指令,用于控制编译过程中的行为。
c
#define PI 3.14 // 定义宏
#include <stdio.h> // 包含标准输入输出库
#ifdef DEBUG
printf("Debug mode\n");
#endif
9. 库函数(常用标准库)
虽然这些不是关键字,但常与C语言关键字一起使用:
-
printf
:输出格式化字符串到标准输出。 -
scanf
:从标准输入读取格式化输入。 -
strlen
:计算字符串长度。 -
strcpy
:复制字符串。
c
#include <stdio.h>
#include <string.h>
int main() {
char str[100] = "Hello";
printf("Length: %lu\n", strlen(str)); // 计算字符串长度
strcpy(str, "World"); // 复制字符串
printf("New String: %s\n", str);
return 0;
}
10. 其他常用关键字
-
signed
:声明有符号类型变量。 -
unsigned
:声明无符号类型变量。 -
long
:声明长整型数据类型,表示更大的整数。 -
short
:声明短整型数据类型,表示较小的整数。
c
unsigned int positive = 10; // 无符号整数
signed int negative = -10; // 有符号整数
long int large = 100000L; // 长整型
short int small = 5; // 短整型