内容正文:
第8章指针
8.1指针的基本概念
8.2指针变量的定义、初始化、引用
8.3指针运算
8.4指针与数组
8.6指针与函数
8.5指针与字符串
8.7指针数组
大学C/C++语言程序设计程序设计 第8章 指针
1-12章幻灯片45分钟 13-27章45分钟
8.6.2 函数指针变量
在C语言中规定,一个函数总是占用一段连续的内存区, 而函数名就是该函数所占内存区的首地址。
如果把函数的首地址赋予一个指针变量。则可以通过该指针变量调用这个函数。
这种指向函数的指针变量被称为“函数指针变量”。
函数指针变量定义的一般形式为:
类型说明符 (*指针变量名)();
例如: int (*pf)();
pf是一个指向某函数的指针变量,该函数的返回值是整型。
大学C/C++语言程序设计程序设计 第8章 指针
【例8.25】 输出2个数中较大值
#include <stdio.h>
int max(int a,int b)
{ if(a>b)return a;
else return b; }
main()
{
int x,y,z;
scanf("%d%d",&x,&y);
z=max(x,y);
printf("max=%d",z);
}
int(*pmax)(int,int);
pmax=max;
z=(*pmax)(x,y);
先定义函数指针变量,
int (*pmax)(int,int);
pmax为函数指针变量。
2. 把被调函数的首地址(函数名)赋予pmax。
3. 用函数指针变量形式调用函数,一般形式为:
(*指针变量名) (实参表)
如何利用函数指针来调用max函数呢?
大学C/C++语言程序设计程序设计 第8章 指针
【例8.25】 输出2个数中较大值
int max(int a,int b)
{ if(a>b)return a;
else return b;
}
main()
{int x,y,z;
scanf("%d%d",&x,&y);
z=max(x,y);
printf("maxmum=%d",z);
}
如果要求函数max返回较大值的地址呢?
大学C/C++语言程序设计程序设计 第8章 指针
【例8.28】 写一个函数,求两个int型变量中居于较大值的变量的地址。
#include <stdio.h>
int *max(int *x,int *y)
{ if(*x>*y)
return x;
else
return y;
}
main()
{ int a,b,*p;
scanf("%d%d",&a,&b);
p=max(&a,&b);
printf("
max:%d",*p);
}
一个函数的返回值是一个指针(即地址),则该函数称为指针型函数。
大学C/C++语言程序设计程序设计 第8章 指针
注意函数指针变量和指针型函数这两者在写法和意义上的区别。
int (*p)()是一个变量说明,说明p 是一个指向函数的指针变量,该函数的返回值是整型量。。
int *p() 是函数说明,说明p是一个函数,其返回值是一个指向整型量的指针。
如: int (*p)() int *p( )
大学C/C++语言程序设计程序设计 第8章 指针
指 针 小 结
1.指针是变量、数组、字符串、函数等在内存的地址。
2.指针变量按定义格式大致可分为五种:
指针变量、指针数组、指向一维数组的指针变量、返回指针值的函数、函数指针变量。
3.指针变量可以指向变量,也可以指向数组,也可以指向字符串。
大学C/C++语