1. C 语言简介
- 定义:C 语言是一种过程式编程语言,设计用于系统编程和应用程序开发。
- 特点:高效、灵活、接近硬件,支持指针和内存操作。
1. 基本语法
-
程序结构:
- C 语言程序由函数组成,
main
函数是程序的入口点。
c#include <stdio.h> int main() { printf("Hello, World!\n"); return 0; }
#include <stdio.h>
是预处理指令,包含标准输入输出库。int main()
是主函数,程序从这里开始执行。printf
用于输出文本到终端。
- C 语言程序由函数组成,
2. 数据类型
-
基本数据类型:
- int:整数类型,通常占用 4 字节。
- float:单精度浮点数,通常占用 4 字节。
- double:双精度浮点数,通常占用 8 字节。
- char:字符类型,通常占用 1 字节。
cint a = 10; float b = 3.14; double c = 2.718281828; char d = 'A';
-
修饰符:
- short、long、signed、unsigned 用于修饰基本数据类型的大小和符号。
cunsigned int x = 1000; long int y = 100000L;
3. 变量
-
声明与初始化:
- 变量必须在使用之前声明,并可以在声明时初始化。
cint a = 5; // 声明并初始化变量 a int b; // 声明变量 b b = 10; // 初始化变量 b
4. 运算符
-
算术运算符:
- +、-、*、/、%,用于基本的数学运算。
cint sum = a + b; int product = a * b;
-
关系运算符:
- ==、!=、>、<、>=、<=,用于比较操作。
cif (a > b) { printf("a is greater than b\n"); }
-
逻辑运算符:
- &&(与)、||(或)、!(非),用于逻辑运算。
cif (a > 0 && b > 0) { printf("Both a and b are positive\n"); }
-
赋值运算符:
- =、+=、-=、*=、/=,用于赋值操作。
ca += 5; // a = a + 5
5. 控制结构
-
条件语句:
- if、else if、else 用于条件判断。
cif (a > b) { printf("a is greater\n"); } else if (a < b) { printf("a is smaller\n"); } else { printf("a and b are equal\n"); }
-
循环语句:
-
for 循环:
cfor (int i = 0; i < 5; i++) { printf("%d\n", i); }
-
while 循环:
cint i = 0; while (i < 5) { printf("%d\n", i); i++; }
-
do-while 循环:
cint i = 0; do { printf("%d\n", i); i++; } while (i < 5);
-
6. 函数
-
函数定义与调用:
- 函数用于组织代码,执行特定任务。
cint add(int x, int y) { return x + y; } int main() { int result = add(5, 3); printf("Result: %d\n", result); return 0; }
-
函数原型:
- 在函数定义之前声明函数,以告知编译器函数的存在。
cint add(int, int);
7. 数组
-
定义与初始化:
- 数组是相同数据类型元素的集合。
cint arr[5] = {1, 2, 3, 4, 5};
-
访问元素:
- 使用索引访问数组元素,索引从 0 开始。
cint first = arr[0]; // 访问第一个元素
8. 字符串
-
定义与操作:
- 字符串是以 null 结尾的字符数组。
cchar str[] = "Hello"; printf("%s\n", str);
-
字符串函数:
- 使用 strlen、strcpy、strcat 和 strcmp 等库函数操作字符串。
c#include <string.h> char dest[50]; strcpy(dest, "Hello"); strcat(dest, " World");
9. 指针
-
定义与使用:
- 指针存储变量的内存地址。
cint a = 10; int *p = &a; // p 指向变量 a 的地址
-
解引用与指针运算:
- 使用 * 操作符访问指针指向的值。
c*p = 20; // 修改 a 的值为 20
10. 结构体
-
定义与使用:
- 结构体用于定义具有不同数据类型的集合。
cstruct Person { char name[50]; int age; }; struct Person p1; strcpy(p1.name, "Alice"); p1.age = 30;
11. 文件操作
-
打开、读写和关闭文件:
- 使用 fopen、fprintf、fscanf、fclose 操作文件。
cFILE *fp = fopen("file.txt", "w"); fprintf(fp, "Hello, File!\n"); fclose(fp); FILE *fp = fopen("file.txt", "r"); char buffer[100]; fgets(buffer, 100, fp); fclose(fp);
12. 动态内存管理
-
分配和释放内存:
- 使用 malloc、calloc、realloc 和 free 管理内存。
cint *arr = (int *)malloc(sizeof(int) * 10); // 使用 arr free(arr);
13. 预处理器指令
-
宏定义:
- 用 #define 定义常量或宏。
c#define PI 3.14159
-
条件编译:
- 使用 #ifdef、#ifndef、#endif 进行条件编译。
c#ifdef DEBUG printf("Debug mode\n"); #endif