C 语言教程
C 语言是一种通用的程序设计语言,由 Dennis Ritchie 在 1972 年开发。它是结构化编程的代表语言之一,拥有广泛的应用领域,特别是在操作系统、寫寪審网络编程、嵌入式系统等方面。C 语言的语法简洁,性能强劲,是许多高级语言(如 C++、Python、Java)的基础。
1. C 语言基础
1.1 程序结构
C 语言的程序通常包括以下部分:
- 头文件:包含必要的库和定义。
- main() 函数:程序的入口点。
- 函数:用于组织代码和实现功能。
- 变量和数据类型:存储程序运行时使用的数据。
一个最简单的 C 语言程序:
arduino
#include <stdio.h> // 引入标准输入输出库
int main() {
printf("Hello, World!\n"); // 打印输出
return 0; // 程序结束
}
php
111 Bytes
© 菜鸟-创作你的创作
1.2 数据类型
C 语言支持多种数据类型,用于存储不同类型的数据。基本数据类型有:
-
整数类型:
int
:通常占 4 字节,用于存储整数。short
:通常占 2 字节,存储较小范围的整数。long
:通常占 8 字节,用于存储较大范围的整数。long long
:通常占 8 字节,存储更大范围的整数。
-
浮点类型:
float
:占 4 字节,存储单精度浮点数。double
:占 8 字节,存储双精度浮点数。
-
字符类型:
char
:占 1 字节,用于存储字符。
-
布尔类型 :
C 标准库没有内建的布尔类型,但可以用
int
来模拟布尔类型(0
表示false
,非零值表示true
)。
1.3 变量声明与初始化
在 C 语言中,变量需要声明类型后才能使用。
arduino
#include <stdio.h>
int main() {
int a = 10; // 整型变量 a
float b = 3.14; // 浮点型变量 b
char c = 'A'; // 字符型变量 c
printf("a = %d, b = %f, c = %c\n", a, b, c);
return 0;
}
php
191 Bytes
© 菜鸟-创作你的创作
1.4 常量
常量在程序运行时不可修改,通常用 #define
定义宏常量,或者使用 const
关键字定义常量。
arduino
#include <stdio.h>
#define PI 3.14159 // 使用 #define 定义常量
int main() {
const int max_value = 100; // 使用 const 定义常量
printf("PI = %f, max_value = %d\n", PI, max_value);
return 0;
}
php
198 Bytes
© 菜鸟-创作你的创作
2. 控制结构
2.1 条件语句
C 语言支持 if
、else if
、else
等条件语句,用于根据不同条件执行不同的代码块。
arduino
#include <stdio.h>
int main() {
int a = 10;
if (a > 0) {
printf("a is positive\n");
} else if (a == 0) {
printf("a is zero\n");
} else {
printf("a is negative\n");
}
return 0;
}
php
226 Bytes
© 菜鸟-创作你的创作
2.2 循环语句
C 语言有三种常见的循环结构:for
循环、while
循环、do-while
循环。
- for 循环 :适用于已知循环次数的情况。
for (int i = 0; i < 5; i++) { printf("i = %d\n", i); }
- while 循环 :适用于不确定循环次数的情况。
int i = 0; while (i < 5) { printf("i = %d\n", i); i++; }
- do-while 循环 :至少执行一次循环体。
int i = 0; do { printf("i = %d\n", i); i++; } while (i < 5);
3. 数组和字符串
3.1 数组
数组是存储相同类型元素的集合。数组的大小在声明时必须指定。
arduino
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5}; // 声明并初始化数组
for (int i = 0; i < 5; i++) {
printf("arr[%d] = %d\n", i, arr[i]);
}
return 0;
}
php
180 Bytes
© 菜鸟-创作你的创作
3.2 字符串
在 C 语言中,字符串是一个字符数组,以空字符 '\0'
结束。
arduino
#include <stdio.h>
int main() {
char str[] = "Hello, World!";
printf("String: %s\n", str);
return 0;
}
php
115 Bytes
© 菜鸟-创作你的创作
4. 函数
函数是 C 语言的基本组织单元,可以将一段代码封装成一个独立的模块。
4.1 函数定义与调用
arduino
#include <stdio.h>
// 函数声明
int add(int, int);
int main() {
int result = add(5, 10);
printf("The sum is: %d\n", result);
return 0;
}
// 函数定义
int add(int a, int b) {
return a + b;
}
php
198 Bytes
© 菜鸟-创作你的创作
5. 指针
指针是 C 语言中的核心概念之一,用于存储内存地址。通过指针,程序可以间接访问和修改数据。
5.1 指针的声明与使用
arduino
#include <stdio.h>
int main() {
int a = 10;
int *p = &a; // p 是指针,指向 a 的地址
printf("Address of a: %p\n", p); // 输出 a 的地址
printf("Value of a: %d\n", *p); // 输出 a 的值
return 0;
}
php
199 Bytes
© 菜鸟-创作你的创作
5.2 指针与数组
指针可以用来访问数组元素。
arduino
#include <stdio.h>
int main() {
int arr[3] = {1, 2, 3};
int *p = arr; // 数组名表示数组首元素的地址
printf("First element: %d\n", *p); // 输出数组第一个元素
return 0;
}
php
166 Bytes
© 菜鸟-创作你的创作
6. 结构体
结构体(struct
)用于将不同类型的数据组合在一起。
arduino
#include <stdio.h>
struct Person {
char name[50];
int age;
};
int main() {
struct Person p1 = {"Alice", 30};
printf("Name: %s, Age: %d\n", p1.name, p1.age);
return 0;
}
php
190 Bytes
© 菜鸟-创作你的创作
7. 文件操作
C 语言提供了一组函数用于文件的读写操作。
arduino
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w"); // 打开文件进行写操作
if (file != NULL) {
fprintf(file, "Hello, File!\n"); // 向文件写入内容
fclose(file); // 关闭文件
}
return 0;
}
php
220 Bytes
© 菜鸟-创作你的创作
8. 动态内存分配
C 语言通过 malloc
、calloc
、realloc
和 free
来进行动态内存分配和管理。
c
#include <stdio.h>
#include <stdlib.h>
int main() {
int *arr = (int *)malloc(5 * sizeof(int)); // 动态分配内存
if (arr == NULL) {
printf("Memory allocation failed!\n");
return 1;
}
for (int i = 0; i < 5; i++) {
arr[i] = i * 2;
}
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
free(arr); // 释放内存
return 0;
}
php
381 Bytes
© 菜鸟-创作你的创作
总结
C 语言是一种强大的编程语言,能够提供对硬件的细粒度控制和高效的性能。尽管 C 语言的语法较为简洁,但它要求程序员对内存管理和指针等底层概念有
深入理解。通过不断练习和编写程序,你将能够掌握 C 语言,并能够开发出各种高效的程序。 www.52runoob.com/archives/41...