C语言程序设计(下):第十周任务
发布时间: 2024-01-27 01:33:05 阅读量: 15 订阅数: 12
# 1. 指针与内存管理
## 1.1 指针的概念与基本用法
指针是一种存储变量地址的变量类型,在C语言中,指针可以用来访问和修改变量的数值,也可以用于动态内存分配和释放。指针的基本用法包括指针的声明、取址运算符&、指针的解引用*等操作。
## 1.2 指针与数组的关系
数组名在C语言中是一个指向数组首元素的指针常量,因此数组名也可以被视为指针来使用。通过指针可以对数组进行遍历和操作,还可以通过指针传递数组作为函数参数。
## 1.3 动态内存分配与释放
动态内存分配是通过malloc、calloc、realloc等函数在程序运行时动态地分配内存空间,动态内存释放是通过free函数来释放动态分配的内存空间。动态内存管理可以在程序运行过程中更灵活地进行内存分配和释放,但也需要注意内存泄漏和内存访问越界的问题。
# 2. 字符串处理
### 2.1 字符串的定义与初始化
字符串是由一串字符组成的数据类型,可以用来存储和处理文本信息。在C语言中,字符串以字符数组的形式存在,使用字符指针指向字符串的首地址。
```c
#include <stdio.h>
int main() {
char str1[] = "Hello"; // 字符串的定义与初始化方法1
char str2[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; // 字符串的定义与初始化方法2
char *str3 = "Hello"; // 字符串的定义与初始化方法3
printf("str1: %s\n", str1);
printf("str2: %s\n", str2);
printf("str3: %s\n", str3);
return 0;
}
```
- 字符串的定义与初始化有多种方法,可以直接使用双引号括起来的字符序列进行初始化,也可以通过字符数组逐个赋值或者使用字符指针指向字符串常量。
- 字符串在内存中以字符序列的形式存储,以空字符 '\0' 结尾,因此,字符数组的大小至少要比存储的字符串长度多一个字符的位置。
- 字符串的输出可以使用 `%s` 格式控制符,通过 `printf` 函数进行输出。
### 2.2 字符串的输入输出
在实际应用中,经常需要从用户输入中获取字符串,或者将字符串输出到文件中。C语言提供了一系列的函数用于字符串的输入输出操作。
```c
#include <stdio.h>
int main() {
char str[50];
printf("请输入一个字符串:");
scanf("%s", str); // 从键盘输入字符串
printf("你输入的字符串是:%s\n", str);
FILE *file = fopen("output.txt", "w");
fprintf(file, "输出到文件中的字符串是:%s\n", str);
fclose(file);
return 0;
}
```
- 使用 `scanf` 函数从键盘输入字符串时,需要注意字符串中不能包含空格,遇到空格就会结束输入。可以使用 `gets` 函数来读取包含空格的字符串。
- 使用文件操作函数 `fopen` 打开一个文件,并使用 `fprintf` 函数将字符串输出到文件中。最后使用 `fclose` 函数关闭文件。
### 2.3 字符串的操作与处理函数
为了方便对字符串进行处理和操作,C语言提供了一些常用的字符串函数。
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[50] = "Hello";
char str2[50] = "World";
char str3[50];
// 字符串拷贝
strcpy(str3, str1); // 将 str1 拷贝到 str3
printf("拷贝的字符串是:%s\n", str3);
// 字符串连接
strcat(str1, str2); // 将 str2 连接到 str1 的末尾
printf("连接后的字符串是:%s\n", str1);
// 字符串比较
int result = strcmp(str1, str2);
if (result == 0) {
printf("字符串相等\n");
} else if (result < 0) {
printf("字符串 str1 小于 str2\n");
} else {
printf("字符串 str1 大于 str2\n");
}
// 字符串长度
int length = strlen(str1);
printf("字符串的长度是:%d\n", length);
return 0;
}
```
- 使用 `strcpy` 函数可以将一个字符串拷贝到另一个字符串中。
- 使用 `strcat` 函数可以将一个字符串连接到另一个字符串的末尾。
- 使用 `strcmp` 函数可以比较两个字符串的大小关系,返回值为 0 表示相等,小于 0 表示第一个字符串小于第二个字符串,大于 0 表示第一个字符串大于第二个字符串。
- 使用 `strlen` 函数可以获取字符串的长度,不包括字符串末尾的空字符。
字符串处理函数还有很多,如查找子串、分割字符串、替换字符串等,根据实际需求选择合适的函数进行使用。
# 3. 结构体与链表
### 3.1 结构体的定义与使用
在C语言中,结构体是一种自定义的数据类型,可以将多个不同类型的变量组合在一起,形成一个新的数据类型。结构体的定义使用关键字`struct`,并指定结构体的名称和成员变量。下面是一个示例:
```c
struct Student {
int id;
char name[20];
int age;
float score;
};
int main() {
// 定义结构体变量并赋值
struct Student stu;
stu.id = 1001;
strcpy(stu.name, "Alice");
stu.age = 18;
stu.score = 90.5;
// 访问结构体成员
printf("Student ID: %d\n", stu.
```
0
0