C语言程序设计-谭浩强-第10章指针.ppt_第1页
C语言程序设计-谭浩强-第10章指针.ppt_第2页
C语言程序设计-谭浩强-第10章指针.ppt_第3页
C语言程序设计-谭浩强-第10章指针.ppt_第4页
C语言程序设计-谭浩强-第10章指针.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

共31张 1 8 5函数的指针和指向函数的指针变量函数指针 函数在编译时被分配的入口地址 用函数名表示 函数指针变量赋值 如p max 函数返回值的数据类型 专门存放函数入口地址可指向返回值类型相同的不同函数 指向函数的指针变量定义形式 数据类型 指针变量名 如int p 函数指针变量指向的函数必须有函数说明 函数调用形式 c max a b c p a b c p a b 对函数指针变量p n p p 无意义 不能省int p 与int p 不同 共31张 2 例用函数指针变量调用函数 比较两个数大小 main intmax int int inta b c scanf d d main intmax int int p inta b c p max scanf d d 共31张 3 用函数指针变量作函数参数 例用函数指针变量作参数 求最大值 最小值和两数之和 共31张 4 8 6返回指针值的函数函数定义形式 类型标识符 函数名 参数表 例int f intx inty 例指针函数实现 有若干学生成绩 要求输入学生序号后 能输出其全部成绩 main floatscore 4 60 70 80 90 56 89 67 88 34 78 90 66 float search float pointer 4 intn p inti m printf Enterthenumberofstudent scanf d 共31张 5 例写一个函数 求两个int型变量中居于较大值的变量的地址 2 3 2004 2000 共31张 6 例写一个函数 求两个int型变量中居于较大值的变量的地址 2004 共31张 7 例写一个函数 求两个int型变量中居于较大值的变量的地址 2 3 3 2 共31张 8 例写一个函数 求两个int型变量中居于较大值的变量的地址 不能返回形参或局部变量的地址作函数返回值 2010 共31张 9 8 7指针数组和指向指针的指针用于处理二维数组或多个字符串指针数组定义 数组中的元素为指针变量定义形式 存储类型 数据类型 数组名 数组长度说明 例int p 4 指针所指向变量的数据类型 指针本身的存储类型 区分int p 4 与int p 4 指针数组赋值与初始化 共31张 10 指针数组赋值与初始化 共31张 11 charname 5 9 gain much stronger point bye char name 5 gain much stronger point bye 二维数组与指针数组区别 二维数组存储空间固定字符指针数组相当于可变列长的二维数组分配内存单元 数组维数 2 各字符串长度 指针数组元素的作用相当于二维数组的行名但指针数组中元素是指针变量二维数组的行名是地址常量 共31张 12 main intb 2 3 pb 2 inti j for i 0 i 2 i for j 0 j 3 j b i j i 1 j 1 pb 0 b 0 pb 1 b 1 for i 0 i 2 i for j 0 j 3 j pb i printf b d d 2d n i j pb i 例用指针数组处理二维数组 共31张 13 例对字符串排序 简单选择排序 main voidsort char name intn print char name intn char name Followme BASIC GreatWall FORTRAN Computer intn 5 sort name n print name n voidsort char name intn char temp inti j k for i 0 i0 k j if k i temp name i name i name k name k temp i 0 共31张 14 例对字符串排序 简单选择排序 main voidsort char name intn print char name intn char name Followme BASIC GreatWall FORTRAN Computer intn 5 sort name n print name n voidsort char name intn char temp inti j k for i 0 i0 k j if k i temp name i name i name k name k temp name 0 name 1 name 2 name 3 name 4 name GreatWall FORTRAN Computer Followme BASIC i 1 共31张 15 例对字符串排序 简单选择排序 main voidsort char name intn print char name intn char name Followme BASIC GreatWall FORTRAN Computer intn 5 sort name n print name n voidsort char name intn char temp inti j k for i 0 i0 k j if k i temp name i name i name k name k temp name 0 name 1 name 2 name 3 name 4 name GreatWall FORTRAN Computer Followme BASIC i 2 共31张 16 例对字符串排序 简单选择排序 main voidsort char name intn print char name intn char name Followme BASIC GreatWall FORTRAN Computer intn 5 sort name n print name n voidsort char name intn char temp inti j k for i 0 i0 k j if k i temp name i name i name k name k temp name 0 name 1 name 2 name 3 name 4 name GreatWall FORTRAN Computer Followme BASIC i 3 共31张 17 例对字符串排序 简单选择排序 main voidsort char name intn print char name intn char name Followme BASIC GreatWall FORTRAN Computer intn 5 sort name n print name n voidsort char name intn char temp inti j k for i 0 i0 k j if k i temp name i name i name k name k temp name 0 name 1 name 2 name 3 name 4 name GreatWall FORTRAN Computer Followme BASIC 共31张 18 多级指针定义 指向指针的指针一级指针 指针变量中存放目标变量的地址 例int p1 int p2 inti 3 p2 二级指针 指针变量中存放一级指针变量的地址 例int p inti 3 p 一级指针 单级间接寻址 二级指针 一级指针 目标变量 二级间接寻址 共31张 19 定义形式 存储类型 数据类型 指针名 如char p 例inti p p p是二级指针 不能用变量地址为其赋值 指针本身的存储类型 最终目标变量的数据类型 p是p间接指向对象的地址 p是p间接指向对象的值 例inti 3 int p1 int p2 p1 多级指针 例三级指针int p 四级指针char p 共31张 20 例一级指针与二级指针 includevoidswap int r int s int t t r r s s t main inta 1 b 2 p q p 2000 2004 2000 共31张 21 例一级指针与二级指针 includevoidswap int r int s int t t r r s s t main inta 1 b 2 p q p 输出 1 2 共31张 22 例一级指针与二级指针 includevoidswap int r int s int t t r r s s t main inta 1 b 2 p q p 输出 1 2 共31张 23 例一级指针与二级指针 includevoidswap int r int s int t t r r s s t main inta 1 b 2 p q p 2000 2004 2000 共31张 24 例一级指针与二级指针 includevoidswap int r int s int t t r r s s t main inta 1 b 2 p q p 2000 2004 输出 2 1 共31张 25 例一级指针与二级指针 includevoidswap int r int s int t t r r s s t main inta 1 b 2 p q p 输出 2 1 共31张 26 例用二级指针处理字符串 defineNULL0voidmain char p char name hello good world bye p name 1 printf o s p p p 2 while p NULL printf s n p 运行结果 644 goodbye 用 p可输出地址 o或 x 也可用它输出字符串 s p 共31张 27 二级指针与指针数组的关系int p与int q 10 指针数组名是二级指针常量p q p i是q i 的地址指针数组作形参 int q 与int q完全等价 但作为变量定义两者不同系统只给p分配能保存一个指针值的内存区 而给q分配10块内存区 每块可保存一个指针值 共31张 28 命令行参数命令行 在操作系统状态下 为执行某个程序而键入的一行字符命令行一般形式 命令名参数1参数2 参数n main intargc char argv 命令行参数传递 带参数的main函数形式 C TC copy exe source ctemp c 有3个字符串参数的命令行 命令行中参数个数 元素指向命令行参数中各字符串首地址 形参名任意 第一个参数 main所在的可执行文件名 共31张 29 例输出命令行参数 main intargc char argv while argc 1 argv printf s n argv argc main intargc char argv while argc 0 printf s n argv

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论