C语言第13讲指针与字符串(字符数组).ppt
《C语言第13讲指针与字符串(字符数组).ppt》由会员分享,可在线阅读,更多相关《C语言第13讲指针与字符串(字符数组).ppt(18页珍藏版)》请在装配图网上搜索。
6 2 3指针与字符串 字符数组 C语言用字符数组存放字符串 字符数组 元素个数确定 一般用下标控制循环 字符串 有效字符个数由 0 确定 用结束符 0 控制循环 字符数组名和字符串的值都是地址 字符串的首地址 1 字符串的访问方法 直接引用字符串 char chp ch abcde 定义字符指针和字符数组 chp ch 指针指向字符数组 putchar chp 2 通过指针引用数组元素 printf s s ch 1 chp 2 引用字符数组 char chp 说明字符指针 chp Hello 指针指向字符串 puts chp 通过指针引用字符串 字符指针可直接指向字符串 char chp Hello 输出 无名一维字符数组 0 例1 输出字符串 includevoidmain chars computer ps s while ps 0 putchar ps ps main charstr 80 p ch inti 0 p str gets p ch getchar for p 0 p if p ch str i p str i 0 printf Thenewstringis s n str 例2 在输入的字符串中删除指定的字符 2000H p 0 ch 0 i 运行程序 abcdefc 2000H str c str printf s ps 或 puts ps Thenewstringis abdef 字符指针 变量 与字符数组的区别 字符指针与字符数组 两者均可存储和运算字符串 主要区别 存储格式不同 字符指针变量中存放的是字符串的首地址 2字节 而字符数组中存放的是整个字符串 一个数组元素存放一个字符 性质不同 字符数组名是地址常量 不能改变 指向首字符 字符指针是地址变量 可以改变 指向不同的字符 赋值方式不同 字符指针 char ps Hello char ps ps Hello 字符数组 charst Hello charst 80 st Hello 或 st Hello 用循环逐个赋值或用strcpy 函数赋值 例 统计字符串中的各元音字母的个数 P182例6 15 includevoidmain void charstr 80 p inta 0 e 0 i 0 o 0 u 0 gets str for p str p 0 p switch p case a case A a break case e case E e break case i case I i break case o case O o break case u case U u printf a 3d ne 3d ni 3d no 3d nu 3d n a e i o u 循环遍历数组元素 判断字母 判断字符串是否结束 2 字符串指针做函数参数 见P183表6 2 includevoidcpystr char s1 char s2 while s2 0 s1 s2 s1 0 voidmain void charstr1 20 str2 123456abcdef printf str2 s n str2 printf str1 s n str1 cpystr str1 str2 printf str2 s n str2 printf str1 s n str1 去掉该句 对程序结果是否有影响 例 编写函数 用指针进行字符串的复制 6 2 4指针数组 指针是存放其它数据对象地址的变量 也可以构成数组 每个数组元素均为一个指针变量 且在内存中连续存放 1 指针数组定义 格式 type 数组名 元素个数 int p 4 定义 说明 p是含有4个元素的指针数组 每个元素都是一个指向整型变量的指针 二级指针 数组名p为数组的首地址 使用前必须让各元素指向对象 inti a 3 4 p 3 for i 0 i 3 i p i a i p i j 2 通过指针数组引用数组元素a i j 2 用指针数组处理多字符串 例 用指针数组对字符串进行排序 includevoidmain void inti j char ps Get Put Time Date p printf 排序前字符串 n for i 0 i0 p ps i ps i ps j ps j p printf 排序后字符串 n for i 0 i 4 i puts ps i 循环实现排序 ps 2 指针数组访问二维数组 通过指针数组输出数组元素的值 分析运行结果 includevoidmain inti j inta 3 3 1 2 3 4 5 6 7 8 9 int pa 3 a 0 a 1 a 2 int p a 0 for i 0 i 3 i for j 0 j 3 j printf 5d pa i j printf n for i 0 i 3 i printf d d d n a i 2 i a i a i i for i 0 i 3 i printf d d d n pa i p i p i pa 0 数组a的二维结构 pa 1 pa 2 a 0 a 1 a 2 6 3指针与函数 6 3 1指向函数的指针概念 函数为程序实体 其代码占据连续的内存地址 其首地址称为函数的入口地址 用函数名表示 C语言通过指针指向函数的入口地址 函数名 也可以实现函数的调用 c max a b intmax intx inty return x y x y 2400H 函数指针变量的定义 type p 函数的类型 指针变量名 函数 使用步骤 定义函数fname和指向函数的指针p 指针指向函数 p fname 通过指针引用函数 格式 p 实参表 main 举例 求a b的最大值 includeintlmax int int voidmain void inta b c int funp funp lmax scanf d d 说明指向函数的指针 指针指向函数 funp lmax 通过指针引用函数 lmax 2100H 2100H 6 3 2返回指针的函数 概念 函数可以返回一个值 也可以返回一个地址 指针 如果函数返回指针 称为返回指针的函数 定义 type 函数名 形参表 函数体 int max inta intb 注意 int p 和int p 的区别 int p 是定义一个变量 p是一个指向函数入口的指针变量 int p 则是定义一个函数 p是一个返回值为指针的函数 它还有函数体部分 例 输入一个1 7之间的整数 输出对应的星期名 char day name intn char name Illegalday Monday Tuesday Wednesday Thursday Friday Saturday Sunday return n7 name 0 name n includemain inti printf InputDayNo n scanf d 定义一个指针型函数 其返回值指向一个字符串 形参n为星期名对应的整数 exit为一库函数 exit 1 有错退出程序 exit 0 正常退出 name为一指针数组 每个元素均为指针变量 运行结果 InputDayNo 2DayNo 2 Tuesday 6 3 3main函数的参数 如DOS命令 C testaabbcc 可执行文件名 命令参数 主函数main 也可以带参数 由于main 不能被其他函数调用 故无法在程序内部取得实参值 它的参数来自dos提示符命令行 如用命令行运行编译连接好的 exe文件 实参就是命令行输入的字符串 主函数一般有两个参数 voidmain intargc char argv 函数体 整型变量 存放命令行字符串的个数 以空格分隔 指向字符的指针数组 分别存放各字符串参数的地址 举例 编程显示命令行输入的参数 includevoidmain intargc char argv inti printf argc d n argc for i 0 i argc i printf argv d s n i argv i testHowareyou 该程序名应为test c 编译 连接后生成test exe C argc4 举例 在字符串中查找特定的字符 include includechar lstrchar char char voidmain void charc p str 80 gets str scanf c 返回指针的函数 指向空 课堂作业 includemain inti chars 5 p for i 0 is p printf s c n p p 写出下列程序运行结果 includeintf int a intn if n 1 return a f a 1 n 1 elsereturn a voidmain intaa 10 1 2 3 4 5 6 7 8 9 10 s s f aa 1 4 printf d n s 思考题 作业题 p188习题一 选择题7 20 二 填空题4 7 三 程序运行题1 3 四 程序填空题2 4 五 程序设计题2 3 6 上机验证p178例6 19 分析行指针定义 p n 和指针数组定义 p n 的异同点 进一步理解和记忆二维数组中数组元素和其地址的表示方法 编程题 include defineN3voidss intc 3 int s1 int s2 voidmain void inta N N b N inti j k sum1 sum2 for i 0 i N i for j 0 j N j scanf d 用指针编写函数分别求二维方阵主 辅对角线上元素的和sum1和sum2 要求 在主函数中输入a 4 4 通过函数用指针求a 4 4 主 辅对角线元素的和 见ktzyss c- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 13 指针 字符串 字符 数组

链接地址:https://www.zhuangpeitu.com/p-6334240.html