《指针和函数》PPT课件.ppt 您所在的位置:网站首页 指针ppt 《指针和函数》PPT课件.ppt

《指针和函数》PPT课件.ppt

2023-08-20 04:52| 来源: 网络整理| 查看: 265

《《指针和函数》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《指针和函数》PPT课件.ppt(21页珍藏版)》请在悦读文库上搜索。

1、第第1313讲讲 指针指针和函数和函数 第13讲 指针和函数 本讲主要内容 n指针作为函数的参数 u简单指针变量作函数参 数 u指向数组的指针作函数 的参数 u字符串指针作函数的参 数 u指针数组作函数的参数 u带参数的main()函数 n指针函数和指向函数的指针变量 n动态内存分配函数简介 第13讲 指针和函数 n教学目标 u熟练掌握用简单指针变量作函数的参数时函 数的定义和调用方法。 u明确数组指针作函数参数和字符串指针作函 数参数的异同,能正确定义和调用字符串指针作参 数的函数。 u熟悉指针数组作参数的函数,了解它的主要 用途。 u了解带参数main()函数的特点,掌握带参数 main(

2、)函数中各个参数的意义,学会带参数main() 函数的设计方法。 u了解指针函数的定义方法及其应用。 u了解动态内存管理的概念及意义,熟悉动态 内存管理函数。 一、指针作为函数的参数 指针可以指向任何类型的数据,因 此通过指针能够实现任何类型的数据 处理。函数使用指针参数,就可以使 函数处理各种类型的数据。与基本数 据类型的变量作函数参数的最大区别 是,在函数间传递的不是变量的数值 ,而是变量的地址,这样可以通过函 数直接处理实参指针指向的数据。 一、指针作为函数的参数 n简单指针变量作函数参数 例12-1用swap()函数交换两个变量的值。 void swap(int *p1,int *p2

3、) int temp; temp=*p1; *p1=*p2; *p2=temp; main() int x,y; scanf(“%d,%d“, if(xmax)max=*(p+i); return(max); main() int a10; input(a,10); printf(“MAX=%dn“,max_a(a,10); 一、指针作为函数的参数 n例12-3 利用一维数组的排序函数对数组排序 。 void p_sort(int *,int ); void output(int *,int); main() int a10=3,-5,8,16,7,19,11,6,17,5; p_sort(a

4、,10); printf(“result: “); output(a,10); void p_sort(int *p,int n) int i,temp,*q; for(i=1;i*(q+1) temp=*q; *q=*(q+1); *(q+1)=temp; void output(int *p,int n) int *q; for(q=p;q0) temp= string j; string j= string j+1; string j+1=temp; void string_out(char * string ,int n) int i; for(i=0;imax_l) max_l=st

5、rlen(stringi); posion=i; return(stringposion); #include “stdio.h“ #include “string.h“ main() char *max_lenth(char *,int); char *p_string4=“Sydney2000“, “Beijing2008“,“Athens1996“, “Korea1992“; char *p; p=max_lenth(p_string,4) puts(p); 二、指针函数和指向函数的指针变量 n 指向函数的指针变量 在定义一个函数之后,编译系统为每个函数确定一个入口地址,当调用 该函数的

6、时候,系统会从这个“入口地址”开始执行该函数。存放函数 的入口地址的变量就是一个指向函数的指针变量,简称函数的指针。 函数的指针的定义方式是: 数据类型 (*指针变量名)() 和变量的指针一样,函数的指针也必须赋初值后才能指向具体的函数。 由于函数名代表了该函数的入口地址,因此,通常直接用函数名为函数 指针赋值,即: 函数指针名 = 函数名 例如: double fun( ); /* 函数说明 */ double (*f)( ); /* 函数指针说明 */ f = fun; /* f指向fun函数 */ 三、动态内存分配函数简介 n 动态内存分配 在前面的程序设计中,存在一个问题,就是在编写程

7、 序时,因为无法确定要处理数据的规模,如字符串的长度、 数值数据的个数等,为保证在数据规模足够大时也能进行处 理,在定义变量时就为它说明一个特别大的空间,而在实际 运行时,可能只需要这空间的很小一部分,也有可能给出的 空间还不够大。这对内存资源利用和程序设计都是不利的。 我们希望,计算机能按需分配内存,在运行时需要多大的空 间就分配多大的空间,这样就能完全解决上面提到的问题。 上面提出的问题,实际上是计算机内存的动态管理问题 。C语言的动态内存管理函数,实现了动态内存管理。 三、动态内存分配函数简介 n 动态内存管理函数 nmalloc()函数 其函数原型为: void *malloc(uns

8、igned int size); 其功能是:分配一块长度为size字节的连续空间,并将该空 间的首地址作为函数的返回值。如果函数没有成功执行,返 回值为空指针(NULL或0)。由于返回的指针的基类型为 void,应该通过显式类型转换后才能存入其他基类型的指针 变量中,否则会有警告提示。 例如: int *p; p=(int *)malloc(sizeof(int); 三、动态内存分配函数简介 n 动态内存管理函数 2free()函数 其函数原型为: void free(void *block); 其功能是:释放以前分配给指针变量block的动态 空间,但指针变量block不会自动变成空指针。

9、三、动态内存分配函数简介 n 动态内存管理函数 3. calloc()函数 其函数原型为: void *calloc(unsigned n,unsigned size); 其功能是:以size为单位大小共分配n*size个字节的连续空 间,并将该空间的首地址作为函数的返回值。如果函数没有 成功执行,返回值为空指针(NULL或0)。该函数比malloc函 数方便之处在于,当动态分配数组空间时,malloc函数必 须手工计算出数组的总字节数,而calloc函数不用计算。 例如: int *p; p=(int *)calloc(10,sizeof(int); 指针和函数-小结 1 1指针作为函数的参

10、数时,在函数间传递的是变指针作为函数的参数时,在函数间传递的是变 量的地址。量的地址。 2 2简单指针变量作函数参数,是指针作函数参数简单指针变量作函数参数,是指针作函数参数 中最基本的内容,它的作用是实现一个简单变量中最基本的内容,它的作用是实现一个简单变量 的地址在函数中的传递。的地址在函数中的传递。 3 3数组名是数组的地址,与指针具有一些相同的数组名是数组的地址,与指针具有一些相同的 性质,用数组指针作函数参数和用数组名作函数性质,用数组指针作函数参数和用数组名作函数 参数有很多相同之处。参数有很多相同之处。 4 4指针数组的元素是指针变量,用指针数组可以指针数组的元素是指针变量,用指

11、针数组可以 方便地实现对一组字符串的处理。用指针数组作方便地实现对一组字符串的处理。用指针数组作 函数参数,可以实现多字符串处理的通用函数。函数参数,可以实现多字符串处理的通用函数。 指针数组的一个重要应用是作为指针数组的一个重要应用是作为main()main()函数的形函数的形 参。参。 指针和函数-小结 5 5字符串指针作函数的参数与数组指针作函数参字符串指针作函数的参数与数组指针作函数参 数没有本质的区别,函数间传递的都是地址值,数没有本质的区别,函数间传递的都是地址值, 所不同的仅是指针指向对象的类型不同而已。所不同的仅是指针指向对象的类型不同而已。 6 6函数返回值是指针类型的函数称

12、为指针函数,函数返回值是指针类型的函数称为指针函数, 使用指针函数可以获得更多的处理结果。需要特使用指针函数可以获得更多的处理结果。需要特 别特别注意的是,对于指针函数,用别特别注意的是,对于指针函数,用returnreturn返回的返回的 值必须是一个指针值。值必须是一个指针值。 7 7动态内存管理的目的是为了实现动态存储。指动态内存管理的目的是为了实现动态存储。指 针类型函数针类型函数malloc()malloc()和和calloc()calloc()用于获取一段可用用于获取一段可用 内存,函数值为内存段的首地址,内存,函数值为内存段的首地址,free()free()函数用于函数用于 释放不再使用的内存段,这些函数在链表操作中释放不再使用的内存段,这些函数在链表操作中 有广泛应用。有广泛应用。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有