c语言教程第6章.ppt

上传人:max****ui 文档编号:8291567 上传时间:2020-03-28 格式:PPT 页数:29 大小:307.81KB
返回 下载 相关 举报
c语言教程第6章.ppt_第1页
第1页 / 共29页
c语言教程第6章.ppt_第2页
第2页 / 共29页
c语言教程第6章.ppt_第3页
第3页 / 共29页
点击查看更多>>
资源描述
第六章指针 地址和指针的概念 指针是C中一个重要概念 也是C的重要特色 可以有效地表示复杂的数据结构 能动态分配内存 能直接处理内存地址等 指针的概念比较复杂 使用很灵活 不易掌握 因此要多做练习 6 1指针概述 地址与指针地址与取地址运算C语言中变量 数组 函数等都占用一定的内存空间 地址是指该内存空间的第一个字节的地址 C语言中取地址运算符 指针与指针变量指针 就是地址 是变量的地址 指针变量 存放变量地址的变量 指针的类型与指针的定义指针所指向的对象的类型即是指针的类型 指针的定义 只要在变量名前加 即可 例 int p表示p是一个指向整型变量的指针 注意 表示其后的变量是指针 指针变量是p而非 p 指针变量一般占2个字节 用来存放一个地址 例L6 0 1变量 地址 指针 指针的地址 指针变量的引用 运算符 取地址运算 运算符 指针运算 指向运算 或间接运算 p表示p所指向的变量 例L6 1 与 运算符 i1 10 i1 p1 i2 20 i2 p2 例L6 2使两个指针变量交换指向 例L6 3交换两个指针变量所指向变量的值 指向指针的指针intI p1 p2 3 i i p1 p1 p2 例L6 3 2 多重指针 从理论上讲 可以有多重指针 但一般极易出错 不提倡使用多重指针 例L6 4多重指针 习题5 9统计单词与空格数 习题5 14字符串转换为大写 小写 数组法 习题5 14 2字符串转换为大写 小写 指针法 6 2指针与数组 一维数组的指针表示a i 下标法访问数组元素 a i 地址法访问数组元素 a i表示 从数组a的首地址开始的第i个元素 例L6 5 ffd0 ffd2 ffd4 ffd6 ffd8 注意 对数组a 不能用自增 减 进行运算 a a 因为数组的首地址是一个常数 虽然可用多种方法访问数组元素 效率不同 用指针访问的速度最快 它不要进行转换 用指针访问数组时 主要是赋值 一定要记住不能越界 否则可能带来严重后果 用指针访问数组时 因为总是从指针当前位置开始 所以要注意指针的当前值 例L6 5的最后一次 例L6 6输入若干个温度 求平均值 用数组 例L6 6 2输入若干个温度 求平均值 用指针 强调一维数组的两个结论 C中 一维数组名代表该数组的起始地址 C中 一维数组的任何一个元素的地址 都可用其数组名加上一个偏移量来表示 这两个结论可以推广至任意维数组都适用 二维数组的指针表示法 二维数组a可以看成是由以下元素构成的一个一维数组 a 0 a 1 a 2 a i 所以a i 既是一个广义一维数组的元素 也是一个一维数组a i 的名字 一维数组的首地址 所以a是指向a i 起始地址的指针 因a i 是一个一维数组名 即是一个一维数组的首地址 也就是指针 可见a是一个二级指针 二维数组元素及地址的引用 例L6 7 0 例L6 7指向数组元素的指针变量 指向一维数组的指针 int p 5 表示P是指向一个一维数组的指针 指向该数组的首地址 P 表示将指针移向下一个一维数组 指向其首地址 所以可用它处理二维数组 参见例L6 8 指针与字符串 字符串是存放在字符数组中的 因此可用指针来访问字符中的字符 例L6 10用三种方式输出字符串 1 直接输出字符串数组string printf s string 2 直接用指向字符串的指针p printf s p 3 用指针逐个字符输出 直接用指针表示字符串 char p CLanguage 表示将字符串 CLanguage 存放在一连续的内存空间 以 0 结束 并将指针P指向该空间的首地址 上面的程序行也可写成两行 char p p CLanguage 例L6 12 1 指针指向的字符串与数组表示的字符串的区别 虽然 chara CLanguage char p CLanguage 都可表示字符串 但两者概念并不相同 a 表示是一个11个元素的字符数组 将CLanguage和 0 分别存入11个单元 a表示首地址 是一个常量 不能改变 如a 是错误的 P只表示一个地址 指向字符串CLanguage的首地址 P的值的是可以改变的 如 p 表示将指针向后移一个单元 指针数组 数组元素都是指针的数组称为指针数组 即指针数组是用来存放一批地址的 主要用来处理字符串数组 如 char name 5 Li Zhang Ling Sun Wang 它比用二维数组要节约内存空间 参见P195 196的两个图 例L6 13在一批字符串中查找指定字符串 指针数组举例 例L6 15用二级指针表示二维数组 对三个字符串排升序 例L6 16用二级指针表示二维数组 输出数组元素 6 3指针与函数 主要有以下三个方面 用指针作为函数参数 函数的返回值是指针 指向函数的指针 指针作为函数参数 习题5 14 2已经进行过介绍 指针作为函数的参数时 传递的是地址 如果对地址中的值进行了修改 则修改不是临时的 比较以下两个例子 例L6 18传递的是地址 且对地址中的值进行了改变 所以在主程序中的改变是当然的 例L6 18 2传递的是地址 没有对地址中的值进行修改 所以在主程序的不变也是当然的 数组指针作为函数的参数 用数组与指针作为函数的参数时 实参与形参可以有以下四种组合 例L6 21求一维数组中下标为奇数的元素之和 指向函数的指针 函数包括一系列的指令 在内存中也占据一片存储单元 也有一个地址 通过该地址就可找到该函数 该地址就是该函数的指针 函数的入口地址 函数指针的定义 类型 指针名 给函数指针赋值 指针名 函数名 用函数指针调用函数 指针名 实参 例L6 26用函数指针两次调用不同的函数 分别实现不同的功能 main 函数中的参数 C语言中的main 函数也可以有参数 一般格式如下 main intargc char argv 表示命令行参数的个数 表示命令行参数数组 main 参数举例 如 C编译后的文件名为cfile exe而执行时用 cfilecomputerlanguage则 argc 3argv cfile computer language 例L6 30输出用户输入的参数 常用指针类型变量归纳 P 或p 1 使p指向下一元素 p 因 与 同优先级 结合方向为自右向左 所以等价于 p 先用后加 即先得到变量的值 p 再使p加1 p 与 p 不同 前者是先取 p值 后使p加1 后者是p先加1 再取 p值 下一单元的值 p 表示p所指向的元素值加1 而不是指针加1 如果P当前指向数组a的第i个元素 则 p 相当于a i 先对p进行 运算 再使p自减 p 相当于a i 先使p自加 再作 运算 p 相当于a i 先使p自减 再作 运算 指针变量的运算小结
展开阅读全文
相关资源
相关搜索

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


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

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


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