C语言课件:字符指针与字符数组详解

需积分: 0 2 下载量 139 浏览量 更新于2024-07-14 收藏 6.93MB PPT 举报
"字符指针变量与字符数组-c语言课件(最终版)" 在C语言中,字符指针变量和字符数组是两种常见的处理字符串的方法。它们之间有着显著的区别和应用场景。 字符数组通常用来存储字符串,它是一个固定大小的内存块,用于存放一系列的字符。例如,`char str[20]` 声明了一个能容纳20个字符的数组,`str` 是数组的名称,代表数组的起始地址,即字符串的首地址。但是,我们不能直接赋值 `str = "I love China!"`,因为字符串常量是不可变的地址常量,而 `str` 是一个变量,这种赋值操作在C语言中是不合法的。 相反,字符指针变量 `char *cp` 存储的是一个地址,这个地址可以指向一个字符,也可以指向一个字符串的起始位置。因此,我们可以这样赋值 `cp = "I love China!"`,此时 `cp` 指向了字符串常量的首地址。但需要注意,如果要用指针 `cp` 接收用户输入的字符串,我们需要先动态开辟存储空间,比如使用 `malloc` 函数,或者预先声明一个字符数组并让指针指向它,如 `char str[10]; cp = str;`,然后使用 `scanf` 函数读取字符串到 `str` 中,通过 `cp` 指针访问。 在处理字符串时,使用字符数组和字符指针有一些关键的注意事项。比如,当你使用 `scanf` 读取字符串时,对于字符数组,可以直接用 `scanf("%s", str)`,因为数组名 `str` 会自动转换为指向其首元素的指针。然而,对于字符指针,需要确保它指向了已分配的内存空间,否则直接使用 `scanf("%s", cp)` 会导致未定义的行为。正确的做法是先让指针指向一个已分配的字符数组,再通过指针读取,如 `scanf("%s", cp)` 其中 `cp` 已经指向了 `str`。 此外,题目中还提到了函数和条件语句的相关知识点。在C语言中,条件语句如 `if` 用于根据条件执行不同的代码块。例如,`if(c>'Z'||c>'z')` 的判断条件并不完善,因为所有的小写字母都会满足 `c>'Z'`,所以这里可以用更简洁的条件 `c>'z'&&c<='z'+4` 来检查小写字母。同时,`switch` 语句提供了一种多分支的选择,但它的条件必须基于同一类型的整型或字符型变量。 函数是C语言中实现模块化编程的重要手段,每个函数应尽可能保持独立、单一的功能,以便于理解和测试。函数定义可以独立,且可以在其他函数之前定义,不需要函数声明(除非有前置声明的需要)。在函数调用中,可以嵌套调用,即在一个函数内部调用另一个函数。函数调用期间,局部变量的“生存期”从分配内存开始,到内存被系统回收结束,例如 `fabs` 函数中的变量。 文件操作也是C语言中的重要部分。使用 `fclose` 关闭文件时,会先将缓冲区的数据写入磁盘,然后再释放文件指针。打开文件的方式有多种,可以直接用文件名和路径,如 `"aa.txt"` 或 `"d:\\fengyi\\bkc\\aa.txt"`,也可以通过用户输入的字符串,如 `scanf` 读取后用 `fopen` 打开。 字符指针变量和字符数组是处理C语言字符串的两种基本方式,理解它们的差异和用法对于编写有效的C程序至关重要。同时,熟悉条件语句、函数调用和文件操作也是掌握C语言的基础。