指针指针数组、多级指针、动态指针

上传人:宝路 文档编号:49521529 上传时间:2018-07-29 格式:PPT 页数:22 大小:450.47KB
返回 下载 相关 举报
指针指针数组、多级指针、动态指针_第1页
第1页 / 共22页
指针指针数组、多级指针、动态指针_第2页
第2页 / 共22页
指针指针数组、多级指针、动态指针_第3页
第3页 / 共22页
指针指针数组、多级指针、动态指针_第4页
第4页 / 共22页
指针指针数组、多级指针、动态指针_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《指针指针数组、多级指针、动态指针》由会员分享,可在线阅读,更多相关《指针指针数组、多级指针、动态指针(22页珍藏版)》请在金锄头文库上搜索。

1、1数组指针以此类推v一维数组名是“列指针类型”-“元素指针类型”指针变量的定义:int *p;v二维数组名是“行指针类型”指针变量的定义:int (*p)4 ;v三维数组名是“页指针类型”指针变量的定义:int (*p)34 ;v四维数组名是“块指针类型”指针变量的定义:int (*p)345 ;圆括号是 必须的2问题的提出v变量是用于存放单个数据的v数组是用于存放“同类型”的多个数据的方便循环控制结构的编程v指针变量是用于存放单个地址号的v“同类型”的多个地址号是否能够集中存储在一 起构成“指针数组”呢?3v元素均为指针类型数据的数组,称为指针数组 v定义形式为: 类型关键字 *数组名数组长

2、度;v例如char *pStr5; pStrpStr55* *charchar四、指针数组注意 没有 圆括号4例: 二维字符数组void main() int i;char str10 = “Pascal“,“Basic“,“Fortran“,“Java“,“Visual C“;for (i=0; i 1) printf(“The other arguments are following:n“); for (i = 1; ixj)vj=i;vreturn(vvvoid main()vvint a5=3,6,1,9,12,*max;vmax=findMax(a);vprintf(“max%d=

3、%d“,max-a,*max);v12五、 多级指针和动态指针1.概念及定义v定义: 指向指针的指针v一级指针:指针变量中存放目标变量的地址p1int *p2;int i=3;p2=p1=*p1=5;二级指针:指针变量中存放一级指针变量的地址例 int *p; int i=3;p=*p=5;(2) 赋值p=pp= (3)引用方法 pp的值 *pp的值 *pp的值多级指针定义形式14动态分配内存152.动态指针v为什么要动态分配内存?当事先不知道所需要处理的数据有多大时, 使 用静态数组, 若数组开辟得太大, 则浪费内存资 源(甚至可能不成功); 若开辟得太小, 又不能 满足计算需要。采用动态分

4、配内存的方法,使用 完毕,再释放内存,以备其它程序使用。C语言中提供了几个标准函数,以实现内存的 分配和释放。16动态分配内存v#include v#include vvoid* malloc(unsigned int size);向系统申请大小为size的内存块,把首地址返回。如果申请不成功 ,返回NULLvvoid* calloc(unsigned int num, unsigned int size);向系统申请num个size大小的内存块,把首地址返回。如果申请不 成功,返回NULLvvoid free(void* p);释放由malloc()和calloc()申请的内存块。p是指向此

5、块的指针vvoid*类型的指针可以指向任意类型的变量17动态数组v一维动态数组int *p = NULL; printf(“Please enter array size:“); scanf(“%d“, p = (int *) malloc(n * sizeof (int); pi /像使用一维数组一样使用 v二维动态数组 printf(“Please enter array size m,n:“); scanf(“%d,%d“, p = (int *) calloc(m * n, sizeof (int); pi*n+j); /像使用一维数组一样使用 18函数指针(选学)1.函数指针的概念一

6、个函数在编译时,被分配了一个入口 地址,这个地址就称为该函数的指针。 可以用一个指针变量指向一个函数,然后通过 该指针变量调用此函数192.指向函数的指针变量 (1)定义格式函数类型 (*指针变量)( );注意:“*指针变量”外的括号不能缺,否则成了返回指针值 的函数。例如,int (*fp)( ); /* fp为指向int函数的指针变量*/(2)赋值函数名代表该函数的入口地址。因此,可用函数名给指向函数的指针变量赋值。指向函数的指针变量 注意:函数名后不能带括号和参数;函数名前的“ for ( i=0;iy; int xiaoyu(int x,int y) return xy; /*条件:大

7、于给定值,并 能被2整除的 */int main() int a9=1,2,3,4,5,6,7,8,9; int x; int (*fun)(int,int); fun=xiaoyu; x=Locate(a,9,6,fun); printf(“Locate:%dn“,x); return 1; 23v指针的概念指针是一种特殊的数据类型v指针的使用原则永远要清楚指针变量存放的是什么,指向了什么 v指针与数组之间的关系理解一维数组与指针是理解二维数组与指针的基础掌握二维数组在内存中的存放方式,是理解二维数组的行指针和列 指针的关键v指针数组v指针函数v指针的应用做函数参数,传地址调用动态分配内存,实现动态数组,对于动态分配的内存,不要忘记在 不使用时释放请自己总结这章所学内容

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号