C语言是一门通用的、过程式的编程语言,由 Dennis Ritchie 在 1972 年于贝尔实验室开发。它是现代计算机科学的基石,许多其他语言(如 C++、Java、Python)都受到了 C 语言的影响。
C 语言概述
C 语言的特点
- 高效性:C 语言是编译型语言,执行速度快
- 灵活性:可以直接操作内存
- 可移植性:代码可以在不同平台上编译运行
- 简洁性:语法简洁,关键字少
- 强大的表达能力:支持指针、位运算等低级操作
C 语言的应用场景
- 操作系统内核开发(Linux、Unix)
- 嵌入式系统开发
- 编译器和解释器开发
- 高性能计算
- 游戏引擎开发
第一个 C 程序
1 2 3 4 5
| #include <stdio.h>
int main(void) { printf("Hello, C!\n"); return 0;
|
代码解释:
#include <stdio.h>:包含标准输入输出库
int main(void):主函数,程序的入口
printf("Hello, C!\n"):打印输出
return 0:返回值,表示程序正常结束
编译与运行
数据类型与变量
基本数据类型
1 2 3 4 5 6 7
| int age = 25; float weight = 65.5; double pi = 3.14159; char grade = 'A'; char name[] = "张三"; short num1 = 10; long num2 = 1000000;
|
类型修饰符
signed:有符号
unsigned:无符号
const:常量
volatile:易变
指针
指针是 C 语言最重要的特性之一,它存储变量的内存地址。
指针的定义与使用
1 2 3 4 5 6 7
| int num = 10; int *p; p = # printf("%d\n", *p); printf("%p\n", p); printf("%p\n", &num);
|
指针与数组
1 2 3 4 5 6 7 8
| int arr[] = {1, 2, 3, 4, 5}; int *p = arr;
for (int i = 0; i < 5; i++) { printf("%d ", *(p + i)); } printf("\n");
|
指针与函数
1 2 3 4 5 6 7 8
| void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; }
int x = 1, y = 2; swap(&x, &y);
|
数组
一维数组
1 2 3 4 5 6
| int arr[5] = {1, 2, 3, 4, 5}; int arr2[10] = {0}; int arr3[] = {10, 20, 30};
printf("%d\n", arr[0]); printf("%ld\n", sizeof(arr));
|
二维数组
1 2 3 4 5
| int matrix[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
|
字符串
C 语言中没有原生的字符串类型,字符串是以 \0 结尾的字符数组。
1 2 3 4 5 6 7 8
| char str[] = "Hello"; char str2[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
printf("%s\n", str); printf("%d\n", strlen(str)); strcpy(str2, str); strcat(str, " World"); strcmp(str, str2);
|
结构体
结构体用于将不同类型的数据组合在一起。
1 2 3 4 5 6 7 8 9 10 11 12
| struct Person { char name[20]; int age; float height; };
struct Person p = {"张三", 25, 1.75}; printf("%s\n", p.name); printf("%d\n", p.age);
struct Person *ptr = &p; printf("%s\n", ptr->name);
|
文件操作
1 2 3 4 5 6 7 8 9 10 11 12
| FILE *fp = fopen("test.txt", "w"); if (fp != NULL) { fprintf(fp, "Hello, C!\n"); fclose(fp); }
fp = fopen("test.txt", "r"); if (fp != NULL) { fscanf(fp, "%s", buf); fclose(fp);
|
内存管理
C 语言需要手动管理内存分配和释放。
1 2 3 4 5 6 7
| int *p = (int *)malloc(10 * sizeof(int)); if (p != NULL) { free(p); p = NULL; }
|
控制流程
条件语句
1 2 3 4 5 6 7
| if (score >= 90) { printf("优秀\n"); } else if (score >= 80) { printf("良好\n"); } else { printf("继续努力\n"); }
|
循环语句
1 2 3 4 5 6 7 8
| for (int i = 0; i < 10; i++) { printf("%d ", i); }
int j = 0; while (j < 10) { printf("%d ", j++); }
|
函数
1 2 3 4 5 6 7 8
| int add(int a, int b) { return a + b; }
int main(void) { int result = add(3, 5); printf("%d\n", result); }
|
总结
本文介绍了 C 语言的基础知识,包括:
- C 语言的特点和应用场景
- 基本数据类型和变量
- 指针的概念和使用
- 数组和字符串
- 结构体
- 文件操作
- 内存管理
- 控制流程和函数
C 语言是学习计算机科学的基础,掌握 C 语言有助于理解计算机的底层原理。建议多动手实践,通过编写程序来加深理解。