C语言程序设计第11章 指针和数组ppt课件_第1页
C语言程序设计第11章 指针和数组ppt课件_第2页
C语言程序设计第11章 指针和数组ppt课件_第3页
C语言程序设计第11章 指针和数组ppt课件_第4页
C语言程序设计第11章 指针和数组ppt课件_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、2022-1-312/422022-1-313/42.12342022-1-314/42.12342022-1-315/42.1234for (i=0; i4; i+) scanf(%d, &ai); for (i=0; i4; i+) printf(%d , ai);for (p=a; p(a+4); p+) scanf(%d, p); for (p=a; p(a+4); p+) printf(%d , *p);2022-1-316/422022-1-317/422022-1-318/42被调函数的形参声明为被调函数的形参声明为数组类型,用下标法访数组类型,用下标法访问数组元素问数组元素20

2、22-1-319/42被调函数的形参声明为被调函数的形参声明为指针类型,用指针法访指针类型,用指针法访问数组元素问数组元素2022-1-3110/42在主函数中这样做没有在主函数中这样做没有多大的实际意义多大的实际意义2022-1-3111/42a00a01a02a10a11a12a0+1a0+2&a11a1+1&a12&a01&a02 a00 a0a01a02a10 a1 a11a12 a a1+22022-1-3112/42a00a01a02a10a11a12 a00 a0a01a02a10 a1 a11a12 a a 代表二维数组的首地址,第代表二维数组的首地址,第0行的地址,行地址行的

3、地址,行地址a + i 代表第代表第i行的地址行的地址但并非增加但并非增加i个字节!个字节!2022-1-3113/42a00a01a02a10a11a12 a00 a0a01a02a10 a1 a11a12 a *(a + i) 即即 ai 代表第代表第i行第行第0列的地址,列地址列的地址,列地址*(a+i) + j 即即 ai + j代表代表第第i行第行第j列的地址列的地址&aij &a12a1+22022-1-3114/42a00a01a02a10a11a12 a00 a0a01a02a10 a1 a11a12 a &a12a1+2*(a + i) 即即 ai 代表第代表第i行第行第0列

4、的地址,列地址列的地址,列地址*(a+i) + j 即即 ai + j代表代表第第i行第行第j列的地址列的地址&aij 2022-1-3115/42pa00a01a02a10a11a122022-1-3116/42pa00a01a02a10a11a122022-1-3117/42a00a01a02a10a11a12p2022-1-3118/42pa00a01a02a10a11a12pi*n+j2022-1-3119/422022-1-3120/42形参声明为列数已知的形参声明为列数已知的二维数组二维数组2022-1-3121/42形参声明为指向列数已知形参声明为指向列数已知的二维数组的行指针的

5、二维数组的行指针2022-1-3122/42形参声明为指向二维数组形参声明为指向二维数组的列指针的列指针2022-1-3123/422022-1-3124/42. 2022-1-3125/422022-1-3126/422022-1-3127/42交换字符数组中的字符串交换字符数组中的字符串物理排序物理排序2022-1-3128/42交换指针数组中的字符串指针交换指针数组中的字符串指针索引排序索引排序2022-1-3129/42在使用指针数组之前在使用指针数组之前必须对数组元素进行初始化必须对数组元素进行初始化2022-1-3130/42能这样输入字符串吗?能这样输入字符串吗?Why?2022

6、-1-3131/422022-1-3132/42如何输入命令行参数?如何输入命令行参数?echo.exe programming is fun2022-1-3133/42argv0echo.exeargv1argv2argv3programmingisfun指针数组指针数组字符串字符串The number of command line arguments is: 4The program name is: echo.exeThe other arguments are following: programming is fun2022-1-3134/42在程序运行期间,用动态内存分配函数来在

7、程序运行期间,用动态内存分配函数来申请的内存都是从堆上分配的,动态内存申请的内存都是从堆上分配的,动态内存的生存期由程序员自己来决定的生存期由程序员自己来决定2022-1-3135/422022-1-3136/42void* malloc(unsigned int size);void* calloc(unsigned int num, unsigned int size);向系统申请大小为向系统申请大小为size的内存块的内存块把首地址返回,若申请不成功则返回把首地址返回,若申请不成功则返回NULL向系统申请向系统申请num个个size大小的内存块大小的内存块把首地址返回,若申请不成功则返回把首地址返回,若申请不成功则返回NULL2022-1-3137/42释放由释放由malloc()和和calloc()申请的内存块申请的内存块p是指向此块内存的指针是指向此块内存的指针free时系统标记此块内存为未占用,可被重新分配时系统标记此块内存为未占用,可被重新分配Method of deallocating memory:2022-1-3138/42确保指针使用前是非空指针确保指针使用前是非空指针释放向系统申请的存储空间释放向系统申请的存储空间 2022-1-3139/42像使用一维数组一样像使用一维数组一

温馨提示

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

评论

0/150

提交评论