已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计 第六讲 主要内容 一 指针和函数 二 指针与数组 三 函数与数组 1 指针和函数1 1指针变量作函数参数1 2返回指针值的函数1 3指向函数的指针变量 swap int p1 int p2 intp p p1 p1 p2 p2 p main inta b int pointer 1 pointer 2 scanf d d 5 9 2000 2002 5 9 COPY 5 例将数从大到小输出 1 1指针变量作为函数参数 swap int p1 int p2 intp p p1 p1 p2 p2 p main inta b int pointer 1 pointer 2 scanf d d 5 9 2000 2002 5 9 例将数从大到小输出 运行结果 9 5 地址传递 swap int p1 int p2 int p p p1 p1 p2 p2 p main inta b int pointer 1 pointer 2 scanf d d 运行结果 9 9 编译警告 结果不对 intx int p 5 9 2000 2002 9 9 COPY 假设2000 例将数从大到小输出 swap intx inty intt t x x y y t main inta b int pointer 1 pointer 2 scanf d d 运行结果 5 9 值传递 5 9 2000 2002 COPY 5 5 9 例将数从大到小输出 运行结果 5 9 swap int p1 int p2 int p p p1 p1 p2 p2 p main inta b int pointer 1 pointer 2 scanf d d 5 9 2000 2002 COPY 2000 地址传递 2000 2002 例将数从大到小输出 Voidf inty int x y y x x x y main intx 2 y 4 f y 例 以下程序的运行结果是 考学结合例题 1 2返回指针的函数 返回值为某指针类型的函数 函数定义形式 类型标识符 函数名 参数表 例int f intx inty 例写一个函数 求两个int型变量中居于较大值的变量的地址 2 3 2002 2000 例写一个函数 求两个int型变量中居于较大值的变量的地址 2 3 3 2 例写一个函数 求两个int型变量中居于较大值的变量的地址 不能返回形参或局部变量的地址 思考为什么 200A 1 3指向函数的指针函数在编译时被分配的入口地址 程序段的存储地址 称为函数指针 用函数名表示 我们将这一地址存到一个指针变量里去 这个变量就是指向函数的指针变量 函数指针变量赋值 如p max 函数返回值的数据类型 专门存放函数入口地址可指向返回值类型相同的不同函数 指向函数的指针变量定义形式 数据类型 指针变量名 如int p 函数指针变量指向的函数必须有函数说明 函数调用形式 c max a b c p a b c p a b 对函数指针变量p n p p 无意义 不能省int p 与int p 不同 用函数指针变量作函数参数 例 用函数指针变量作参数 求最大值 最小值和两数之和 1 有以下程序main inta 1 b 3 c 5 int p1 fun函数返回值是A 不确定的值B 一个整数C 形参p中存放的值D 形参p的地址值 考学结合例题 3 08 4 40 设有定义语句int f int 则以下叙述正确的是 A f是基类型为int的指针变量B f是指向函数的指针变量 该函数具有一个int类型的形态C f是指向int类型一维数组的指针变量D f是函数名 该函数的返回值是其类型为int类型的地址4 09 9 33 设有以下函数 voidfun intn char s 则下面对函数指针的定义和赋值均正确的是A void pf pf fun B void pf pf fun C void pf pf fun D void pf int char pf fun 考学结合例题 二 指针与数组2 1一维数组和指针1 地址关系2 指向一维数组的指针变量3 数组的表示方法2 2二维数组和指针1 二维数组元素的地址和二维数组名2 指向二维数组元素的指针变量3 指向二维数组中的行的指针变量 2 1一维数组和指针1 一维数组元素的地址和一维数组名 地址关系 设 inta 10 p 数组名是表示数组首地址的地址常量 1 可以通过数组名来表示数组元素的地址 a 即a 0 是a 0 的地址即 即 a i 2 指向一维数组的指针变量设 inta 10 p a 2 有关指针的运算1 算术运算 p i p i d i为整型数 d为p指向的变量所占字节数 p p p i p i p i p i等若p1与p2指向同一数组中的元素 p1 p2 两指针间元素个数 p1 p2 dp1 p2无意义 例p指向float数 则p 1 p 1 4 例p指向int型数组 且p 则p 1指向a 1 1 2 指针变量的关系运算若p1和p2指向同一数组 则p1p2表示p1指的元素在后p1 p2表示p1与p2指向同一元素若p1与p2不指向同一数组 比较无意义p NULL或p NULL 3 数组元素表示方法 变址运算符a i a i a i p i p i a i 例数组元素的引用方法 main inta 5 pa i for i 0 i 5 i a i i 1 pa a for i 0 i 5 i printf pa d d n i pa i for i 0 i 5 i printf a d d n i a i for i 0 i 5 i printf pa d d n i pa i for i 0 i 5 i printf a d d n i a i 08 932若有定义语句 doublex 5 1 0 2 0 3 0 4 0 5 0 p x 则错误引用x数组元素的是 A pB x 5 C p 1 D x10 3 28 设有定义doublea 10 s a 一下能够代表数组元素a 3 的是A s 3 B s 3 C s 3 D s 3 例inta 1 2 3 4 5 6 7 8 9 10 p a i 数组元素地址的正确表示 A a 1 B a C p D p i 数组名是地址常量p p a a a 1 a 2 例voidmain inta 5 8 7 6 2 7 3 inty p 输出 56 例注意指针变量的运算 6 例1 有以下程序 main inta 10 1 2 3 4 5 6 7 8 9 10 p 程序运行结果是 2 2二维数组和指针1 二维数组元素的地址和二维数组名 设有 inta 3 4 p 对于二维数组 1 a是数组名 包含三个元素a 0 a 1 a 2 2 每个元素a i 又是一个一维数组 包含4个元素 inta 3 4 基类型 行指针与列指针 对二维数组inta 3 4 有a 二维数组的首地址 即第0行的首地址a i 第i行的首地址a i a i 第i行第0列的元素地址a i j a i j 第i行第j列的元素地址 a i j a i j a i j a i a i a i a i a i 0 值相等 含义不同a i a i 表示第i行首地址 指向行a i a i a i 0 表示第i行第0列元素地址 指向列 二维数组元素表示形式 1 a 1 2 2 a 1 2 3 a 1 2 4 a 0 0 1 4 2 地址表示 1 a 1 2 a 1 0 3 a 1 4 a 1 5 int a 1 地址表示 1 a 1 2 2 a 1 2 3 a 1 2 4 a 0 0 1 4 2 2 指向二维数组元素的指针变量 例指向二维数组元素的指针变量 main staticinta 3 4 1 3 5 7 9 11 13 15 17 19 21 23 int p for p a 0 p a 0 12 p if p a 0 4 0 printf n printf 4d p p a p 3 指向二维数组中的行的指针变量定义形式 数据类型 指针名 一维数组维数 例int p 4 不能少int p 4 与int p 4 不同 p的值是一维数组的首地址 p是行指针 可让p指向二维数组某一行如inta 3 4 p 4 a 一维数组指针变量维数和二维数组列数必须相同 例 二维数组行指针变量举例 main staticinta 3 4 1 3 5 7 9 11 13 15 17 19 21 23 inti j p 4 for p a i 0 i 3 i p for j 0 j 4 j printf d p j printf n p a 0 p a p p 0 j 08 4 9 以下程序的定义语句中 x 1 的初值是 9 程序运行后输出的内容是 10 includemain int 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 p 4 i for i 0 i 4 i p i 则下列说法正确的是A 定义了基类型为int的三个指针变量B 定义了基类型为int的具有三个元素的指针数组pt C 定义了一个名为 pt 具有三个元素的整型数组D 定义了一个名为pt的指针变量 它可以指向每行有三个整数元素的二维数组 答案 2468 三 数组与函数 1 一维数组元素作实参2 一维数组名作实参对应函数的首部可以是以下3种格式 Fun int a Fun inta Fun inta n 例 intfun int x intn inti sum 0 for i 0 i n i sum sum x i returnsum Main inta 1 2 3 4 5 s 0 s fun a 5 printf d n s 程序运行结果是 3 一维数组元素地址作实参例 Voidsum intp p 0 p 1 p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信息技术五年级全册第21课 设计笔筒教案
- 歌曲《稻草里的火鸡》教学设计-2025-2026学年小学音乐花城版二年级上册-花城版
- 销售量协议合同书范本
- 绿化白蚁预防合同范本
- 绿化草子销售合同范本
- 衣服毛料买卖合同范本
- 酒店公司转让协议合同
- 看护风景雇佣合同范本
- 网络安全防护措施简析
- 数学常考题型试卷及答案
- 法务岗位招聘笔试题与参考答案(某大型国企)
- 全国巾帼家政服务职业技能大赛(养老护理员)理论考试题库-上(单选题)
- 【京东物流配送模式及优化建议探析11000字(论文)】
- 林麝养殖知识讲座
- 新疆的若干历史问题
- 脑梗死伴高血压3级病例分析专题报告
- 论文写作讲座(英语科技论文撰写与投稿)课件
- 肺癌知识讲座
- 国家一等奖《纪念刘和珍君》教学设计
- 医疗质量每月检查记录表
- vas疼痛评分完整版
评论
0/150
提交评论