⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 第13章 函数(二).htm

📁 用非常通俗的语言介绍了C++和C
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0049)http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm --><HTML><HEAD><TITLE>教学--第十三章 函数(二)</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>P {
	MARGIN: 1px 2px; LINE-HEIGHT: 150%
}
.节标题 {
	FONT-WEIGHT: bold; FONT-SIZE: 12pt
}
TD {
	FONT-SIZE: 9pt
}
.tdtitle {
	FONT-SIZE: 20pt
}
.celltopline {
	BORDER-TOP: #000000 1px solid
}
.menucell {
	FONT-SIZE: 10pt
}
#glowtext {
	FONT-SIZE: 10pt; FILTER: glow(color=red,strength=1); WIDTH: 100%
}
A:link {
	FONT: 10pt 宋体; COLOR: blue; TEXT-DECORATION: none
}
A:visited {
	FONT: 10pt 宋体; COLOR: purple; TEXT-DECORATION: none
}
A:active {
	FONT: 10pt 宋体; COLOR: red; TEXT-DECORATION: underline
}
A:hover {
	COLOR: blue; TEXT-DECORATION: underline
}
</STYLE>

<META content="MSHTML 6.00.2900.2769" name=GENERATOR></HEAD>
<BODY>
<CENTER>
<TABLE height=154 cellSpacing=4 cellPadding=4 width=760 border=0>
  <TBODY>
  <TR>
    <TD 
    style="FONT-SIZE: 10pt; MARGIN-LEFT: 12px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%; MARGIN-RIGHT: 12px; FONT-FAMILY: 宋体" 
    width="100%" height=148>
      <H2>第十三章 函数(二)</H2>
      <P><A href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.1">13.1 
      函数的返回值</A></P>
      <P>&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.1.1">13.1.1 
      函数的返回类型</A> 
      <P>&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.1.2">13.1.2 
      return 语句</A> 
      <P>&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.1.3">13.1.3 
      跟踪函数</A> 
      <P><A href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.2">13.2 
      函数的参数</A> 
      <P>&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.2.1">13.2.1 
      形参和实参</A> 
      <P>&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.2.2">13.2.2 
      参数的传递方式</A> 
      <P>&nbsp;&nbsp;&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.2.2.1">13.2.2.1 
      传值方式</A> 
      <P>&nbsp;&nbsp;&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.2.2.2">13.2.2.2 
      传址方式</A> 
      <P>&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.2.3">13.2.3 
      参数的传递过程(选修)</A> 
      <P>&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.2.4">13.2.4 
      参数默认值</A> 
      <P><A href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.3">13.3 
      函数重载</A> 
      <P>&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.3.1">13.3.1 
      重载的目的</A> 
      <P>&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.3.2">13.3.2 
      函数重载的规则</A> 
      <P>&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.3.3">13.3.3 
      参数默认值与函数重载的实例</A> 
      <P><A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.4">13.4 inline 
      函数</A> 
      <P>&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.4.1">13.4.1 
      什么叫inline函数?</A> 
      <P>&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.4.2">13.4.2 
      inline函数的规则</A> 
      <P><A href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.5">13.5 
      函数的递归调用(选修)</A> 
      <P>&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.5.1">13.5.1 
      递归和递归的危险</A> 
      <P>&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.5.2">13.5.2 
      递归调用背后隐藏的循环流程</A> 
      <P>&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.5.3">13.5.3 
      参数在递归调用过程中的变化</A> 
      <P>&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.5.4">13.5.4 
      一个安全的递归调用函数实例</A> 
      <P>&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.5.5">13.5.5 
      递归函数的返回</A> 
      <P><A href="http://www.d2school.com/bcyl/bhcpp/newls/ls13.htm#13.6">13.6 
      小结</A> </P>
      <P>  </P>
      <P>上一章我们讲了函数最基本的知识,即如何函数调用一个函数,和如何写一个函数。这一章我们的任务是:重点加深学习函数的返回值和函数的参数;另外我们还将选修函数的递归调用。</P>
      <P> </P>
      <P>通过对这两个知识点的深化学习,我们对函数的理解会更深。</P>
      <P> </P>
      <H3><A name=13.1>13.1</A> 函数的返回值</H3>
      <P>有关函数的返回值,将涉及到函数的这些知识点:函数的类型,return,及如何得到函数的返回类型。</P>
      <P> </P>
      <H4><A name=13.1.1>13.1.1</A> 函数的返回类型</H4>
      <P> </P>
      <P>函数的类型,其实是函数返回值的类型。请看例子:</P>
      <P> </P>
      <P>//实现两个整数相加的函数:</P>
      <P><FONT color=#ff0000>int </FONT>AddTwoNum(int a,int b)</P>
      <P>{</P>
      <P>&nbsp;&nbsp; return a + b;</P>
      <P>}</P>
      <P> </P>
      <P>上面标为红色的int即为函数 
      AddTwoNum的类型,普通的说法是“函数AddTwoNum的返回类型是整型”。也就是说函数AddTwoNum只能返回整型的值。我们看代码:</P>
      <P>return a + b;</P>
      <P>返回了a + b,其中a和b都是整型,二者相加也是整型。所以这个函数的返回类型正确。下面看一个错误的实例:</P>
      <P> </P>
      <P>int AddTwoNum(<FONT color=#ff0000>float</FONT> a,<FONT 
      color=#ff0000>float</FONT> b)</P>
      <P>{</P>
      <P>&nbsp;&nbsp; return a + b;</P>
      <P>}</P>
      <P> </P>
      <P>尽管从逻辑上看,这段代码也没有错误,同样可以实现两个数相加,但我们认为它是有错的代码。因为函数AddTwoNum()的类型仍然规定为int类型,但函数体中的代码,却试图返回的却是float类型。为什么说返回的是float类型呢?因为请注意,现在a,b都是float类型了。</P>
      <P>不仅这段代码有错,下面的代码也同样错误:</P>
      <P> </P>
      <P>int AddTwoNum(int a, int b)</P>
      <P>{</P>
      <P>&nbsp;&nbsp; float c = a + b;</P>
      <P>&nbsp;&nbsp; return c;</P>
      <P>}<BR></P>
      <P>要注意,写类似上面的代码,编译器会放行,并不认为错误。那是因为编译器将一个float类型强制转换为int类型,这就会造成精度丢失。比如调用:AddTwoNum(1.2, 
      2.4),得到结果为3,而不3.6。</P>
      <P> </P>
      <H4><A name=13.1.2>13.1.2</A> return 语句</H4>
      <P>return 
      语句只在函数内使用。它起到让函数停止运行,然后返回一个值的作用。我们通过一个特殊的对比,可以看到return的第一个作用:让函数停止运行.</P>
      <TABLE cellSpacing=0 cellPadding=0 width="82%" border=0>
        <TBODY>
        <TR>
          <TD width="18%"></TD>
          <TD width="43%">代码一</TD>
          <TD width="39%">代码二</TD></TR>
        <TR>
          <TD width="18%"> </TD>
          <TD width="43%">void OutputSomething() 
            <P>{</P>
            <P>&nbsp;&nbsp; cout &lt;&lt; "第1行" &lt;&lt; endl;</P>
            <P>&nbsp;&nbsp; cout &lt;&lt; "第2行" &lt;&lt; endl;</P>
            <P>&nbsp;&nbsp; cout &lt;&lt; "第3行" &lt;&lt; endl;  </P>
            <P>}</P>
            <P> </P>
            <P> </P>
            <P>OutputSomething();</P></TD>
          <TD width="39%">void OutputSomething() 
            <P>{</P>
            <P>&nbsp;&nbsp; cout &lt;&lt; "第1行" &lt;&lt; endl;</P>
            <P>&nbsp;&nbsp; <FONT color=#ff0000>return;</FONT></P>
            <P>&nbsp;&nbsp; cout &lt;&lt; "第2行" &lt;&lt; endl;</P>
            <P>&nbsp;&nbsp; cout &lt;&lt; "第3行" &lt;&lt; endl;  </P>
            <P>}</P>
            <P> </P>
            <P>OutputSomething();</P></TD></TR>
        <TR>
          <TD width="18%">输出结果:</TD>
          <TD vAlign=top width="43%" bgColor=#000000>
            <P><FONT color=#ffffff>第1行</FONT> 
            <P><FONT color=#ffffff>第2行</FONT></P>
            <P><FONT color=#ffffff>第3行</FONT></P></TD>
          <TD vAlign=top width="39%" bgColor=#000000>
            <P><FONT color=#ffffff>第1行</FONT></P></TD></TR></TBODY></TABLE>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -