C语言第13讲指针与字符串(字符数组).ppt

上传人:max****ui 文档编号:6334240 上传时间:2020-02-23 格式:PPT 页数:18 大小:1.11MB
返回 下载 相关 举报
C语言第13讲指针与字符串(字符数组).ppt_第1页
第1页 / 共18页
C语言第13讲指针与字符串(字符数组).ppt_第2页
第2页 / 共18页
C语言第13讲指针与字符串(字符数组).ppt_第3页
第3页 / 共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
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!