第11章指针和数组PPT课件_第1页
第11章指针和数组PPT课件_第2页
第11章指针和数组PPT课件_第3页
第11章指针和数组PPT课件_第4页
第11章指针和数组PPT课件_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、2021-11-102/422021-11-103/42.1 12 23 34 42021-11-104/42.1 12 23 34 42021-11-105/42.1 12 23 34 4forfor (i=0; i4; i+) (i=0; i4; i+) scanf(%d, &ai); scanf(%d, &ai); forfor (i=0; i4; i+) (i=0; i4; i+) printf(%d , ai); printf(%d , ai);forfor (p=a; p(a+4); p+) (p=a; p(a+4); p+) scanf(%d, p); scanf

2、(%d, p); forfor (p=a; p(a+4); p+) (p=a; p(a+4); p+) printf(%d , printf(%d , * *p);p);2021-11-106/42【例例11.111.1】演示数组元素的引用方法演示数组元素的引用方法 2021-11-107/42【例例11.111.1】演示数组元素的引用方法演示数组元素的引用方法 2021-11-108/42【例例11.211.2】演示数组和指针变量作函数参数演示数组和指针变量作函数参数 被调函数的形参声明为被调函数的形参声明为数组类型,用下标法访数组类型,用下标法访问数组元素问数组元素2021-11-109/

3、42【例例11.211.2】演示数组和指针变量作函数参数演示数组和指针变量作函数参数 被调函数的形参声明为被调函数的形参声明为指针指针类型类型,用指针法访,用指针法访问数组元素问数组元素2021-11-1010/42【例例11.211.2】演示数组和指针变量作函数参数演示数组和指针变量作函数参数 在主函数中这样做没有在主函数中这样做没有多大的实际意义多大的实际意义2021-11-1011/42a00a01a02a10a11a12a0+1a0+2&a11a1+1&a12&a01&a02 a00 a0a01a02a10 a1 a11a12 a a1+2 a23;20

4、21-11-1012/42a00a01a02a10a11a12 a00 a0a01a02a10 a1 a11a12 a a23;a a 代表代表二二维数组的首地址,维数组的首地址,第第0 0行行的地址,的地址,a + i a + i 代表代表第第i i行行的地址的地址但并非增加但并非增加i i个字节!个字节!2021-11-1013/42a00a01a02a10a11a12 a00 a0a01a02a10 a1 a11a12 a *(a + i) 即即 ai 代表代表第第i行行的地址的地址,*(a+i) + j 即即 ai + j代表代表第第i行行的地址的地址&aij &a12

5、a1+22021-11-1014/42a00a01a02a10a11a12 a00 a0a01a02a10 a1 a11a12 a &a12a1+2( *(a+i) + j ) 即即 aij 代表代表第第i行第行第j列列的的*(a + i) 即即 ai 代表代表第第i行行的地址的地址,*(a+i) + j 即即 ai + j代表代表第第i行行的地址的地址&aij 2021-11-1015/42p a23; a23;a00a01a02a10a112021-11-1016/42p a23; a23;a00a01a02a10a11a122021-11-1017/42 a23; a23

6、;a00a01a02a10a11a12p2021-11-1018/42p a23;a00a01a02a10a11a122021-11-1019/42【例例11.311.3】输入一个输入一个3 3行行4 4列列的二维数组,然后输出这的二维数组,然后输出这个二维数组的元素值个二维数组的元素值 2021-11-1020/42【例例11.311.3】输入一个输入一个3 3行行4 4列的二维数组,然后输列的二维数组,然后输出这个二维数组的元素值出这个二维数组的元素值 形参声明为列数已知形参声明为列数已知的二维数组的二维数组2021-11-1021/42【例例11.311.3】输入一个输入一个3 3行行4

7、 4列的二维数组,然后输出这列的二维数组,然后输出这个二维数组的元素值个二维数组的元素值 形参声明为指向列数已知形参声明为指向列数已知的二维数组的行指针的二维数组的行指针2021-11-1022/42【例例11.311.3】输入一个输入一个3 3行行4 4列的二维数组,然后输出这列的二维数组,然后输出这个二维数组的元素值个二维数组的元素值 形参声明为指向二维数形参声明为指向二维数组的组的列列指针指针2021-11-1023/42【例例11.311.3】输入一个输入一个3 3行行4 4列的二维数组,然后输出这列的二维数组,然后输出这个二维数组的元素值个二维数组的元素值 形参声明为指向二维数形参声

8、明为指向二维数组的组的列列指针指针2021-11-1024/42【例例11.311.3】输入一个输入一个3 3行行4 4列的二维数组,然后输出这列的二维数组,然后输出这个二维数组的元素值个二维数组的元素值 2021-11-1025/422021-11-1026/422021-11-1027/422021-11-1028/42交换字符数组中的字符串交换字符数组中的字符串物理排序物理排序2021-11-1029/42交换指针数组中的字符串指针交换指针数组中的字符串指针索引排序索引排序2021-11-1030/42在使用指针数组之前在使用指针数组之前必须对数组元素进行初始化必须对数组元素进行初始化2

9、021-11-1031/42能这样输入字符串吗?能这样输入字符串吗?Why?Why?2021-11-1032/42 Arguments Arguments2021-11-1033/42如何输入命令行参数?如何输入命令行参数?echo.exe programming is fun2021-11-1034/42argv0echo.exeargv1argv2argv3programmingisfun指针数组指针数组字符串字符串The number of command line arguments is: 4The program name is: echo.exeThe other argumen

10、ts are following: programming is fun2021-11-1035/42 全局变量和静态变量全局变量和静态变量 存放函数参数值、局部变量值等存放函数参数值、局部变量值等在执行函数调用时,系统在栈上为函数内的局部变量及形在执行函数调用时,系统在栈上为函数内的局部变量及形参分配内存,函数执行结束时,自动释放这些内存参分配内存,函数执行结束时,自动释放这些内存 在程序运行期间,用动态内存分配函数来申请的内存都是在程序运行期间,用动态内存分配函数来申请的内存都是从堆上分配的,动态内存的生存期由程序员自己来决定从堆上分配的,动态内存的生存期由程序员自己来决定 2021-11

11、-1036/42分配内存的两种主要方法:分配内存的两种主要方法: mallocmalloc( (unsignedunsigned intint size); size); calloccalloc( (unsigned unsigned intint numnum, , unsigned unsigned intint size); size);类型的指针可以指向任意类型的变类型的指针可以指向任意类型的变量,通常强转量,通常强转为其他类型为其他类型2021-11-1037/42 mallocmalloc( (unsignedunsigned intint size); size); callo

12、ccalloc( (unsigned unsigned intint numnum, , unsigned unsigned intint size); size);向系统申请大小为向系统申请大小为的内存块的内存块把首地址返回,若申请不成功则返回把首地址返回,若申请不成功则返回向系统申请向系统申请numnum个个sizesize大小的内存块大小的内存块把首地址返回,若申请不成功则返回把首地址返回,若申请不成功则返回NULLNULL分配内存的两种主要方法:分配内存的两种主要方法:2021-11-1038/42释放由释放由和和申请的内存块申请的内存块是指向此块内存的指针是指向此块内存的指针时系统标

13、记此块内存为未占用,可被重新分配时系统标记此块内存为未占用,可被重新分配分配内存的两种主要方法:分配内存的两种主要方法:2021-11-1039/42确保指针使用前是非空指针确保指针使用前是非空指针释放向系统申请的存储空间释放向系统申请的存储空间例例11.6 11.6 输入某个班输入某个班某门课成绩,计算某门课成绩,计算并输出其平均分。并输出其平均分。2021-11-1040/42像使用一维数组一样像使用一维数组一样使用动态数组使用动态数组例例11.6 11.6 输入某个班输入某个班某门课成绩,计算某门课成绩,计算并输出其平均分。并输出其平均分。2021-11-1041/42确保指针使用前确保指针使用前是非空指针是非空指针释放向系统申请释放向系统申请的存

温馨提示

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

评论

0/150

提交评论