📄 c65.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>指向函数的指针 </title>
<script language="javascript">
var prePage="http://www.nec.sjtu.edu.cn/support/Course/C/c/c6/c/c6/c64.htm";
var nextPage="c/c6/c66.htm";
</script>
<link rel="stylesheet" href="../cstyle.css" type="text/css">
</head>
<body background="../img/mainback.jpg" bgproperties="fixed">
<h2 align="center"><font face="楷体_GB2312"><a name="_top"></a>6.5 <font COLOR="#000000">指向函数的指针</font></font></h2>
<table border="0" width="100%">
<tr>
<td width="50%"><p align="center"><a href="c65.htm#c651.html#c651">介绍</a></td>
<td width="50%"><p align="center"><a href="c65.htm#c652.html#c652">例子</a></td>
</tr>
</table>
<hr>
<h3><a name="c651"></a>1.介绍</h3>
<blockquote>
<p>函数指针是 C 语言中最有用的功能, 但它也容易与变量发生混淆.发生混淆的原因是,
尽管函数不是变量, 但由于它在内存中有一个物理位置,
而这个位置是可以赋给一个指针的。一个函数的地址就是该函数的入口点;
因此,<br>
函数指针可被用来调用一个函数。<br>
<br>
函数的地址是用不带任何括号或参数的函数名来得到的。(这很类似于数组地址的得到方法,
即, 在只有数组名而无下标时就得到数组地址。)</p>
<p>怎样说明一个函数指针变量呢? <br>
为了说明一个变量 fn_pointer 的类型是"返回值为 int 的函数指针",
你可以使用下面的说明语句:<br>
<font color="#000080"><strong><big>int (*fn_pointer) ();</big></strong></font><br>
为了让编译器能正确地解释这句语句, *fn_pointer
必须用括号围起来。若漏了这对括号, 则:<br>
int *fn_pointer ();<br>
的意思完全不同了。fn_pointer 将是一个函数名, 其返回值为 int
类型的指针。<br>
<br>
单目间址运算符 <font color="#FF00FF">*</font> 的优先级低于 <font
color="#FF00FF">( )</font> 运算符, 因此必须使用括号, 以指出 fn_pointer
是一个指向返回值为 int <br>
类型的函数的指针, 而不是一个返回值为 int 指针的函数。<br>
<br>
<br>
让我们学习下面这个程序。<br>
<br>
</p>
<p align="center"><!-- Aftershock c651.swf 3=500 4=380 40 -->
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=3,0,0,0" ID="c651"
WIDTH="500" HEIGHT="380">
<param name="movie" value="../movie/c651.swf">
<param name="quality" value="autohigh">
<param name="bgcolor" value="#FFFFCC"><embed SRC="../movie/c651.swf" swLiveConnect="FALSE" WIDTH="500" HEIGHT="380"
QUALITY="autohigh" BGCOLOR="#FFFFCC" TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
</object>
<!-- EndAftershock c651.swf --> </p>
<p align="right"><a href="c65.htm#_top.html#_top">返回页首</a></p>
</blockquote>
<hr>
<h3><a name="c652"></a>2.例子</h3>
<blockquote>
<p align="center">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=3,0,0,0" ID="c652"
WIDTH="550" HEIGHT="400">
<param name="movie" value="../movie/c652.swf">
<param name="quality" value="autohigh">
<param name="bgcolor" value="#FFFFCC"><embed SRC="../movie/c652.swf" swLiveConnect="FALSE" WIDTH="550" HEIGHT="400"
QUALITY="autohigh" BGCOLOR="#FFFFCC" TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
</object>
<!-- EndAftershock c652.swf --> </p>
<p align="right"><a href="c65.htm#_top.html#_top">返回页首</a></p>
</blockquote>
<p align="center"><a href="http://www.nec.sjtu.edu.cn/support/Course/C/c/c6/c66.htm"><img src="../img/next.gif" width="145" height="30"
alt="next.gif (3633 bytes)" border="0"></a></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -