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

📄 教学--第十七章 数组(二).htm

📁 《白话c++网页版》是一本用浅显易懂的并具有点幽默的语调来讲述c++的高深的内容
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0045)http://d2school.com/bcyl/bhcpp/newls/ls17.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
}
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.2180" name=GENERATOR></HEAD>
<BODY leftMargin=0 topMargin=3>
<CENTER>
<TABLE height=105 cellSpacing=4 cellPadding=4 width=760 border=0>
  <TBODY>
  <TR>
    <TD 
    style="FONT-SIZE: 10pt; TEXT-INDENT: 20px; LINE-HEIGHT: 150%; FONT-FAMILY: &Euml;&Icirc;&Igrave;&aring;" 
    width="100%" height=210>
      <H2>第十七章 数组(二)</H2>
      <P><A href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.1">17.1 
      数组与内存</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.1.1">17.1.1 
      数组的内存结构</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.1.2">17.1.2 
      数组的内存地址</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.1.3">17.1.3 
      数组元素的内存地址</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.1.4">17.1.4 
      数组访问越界</A>
      <P><A href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.2">17.2 
      二维数组</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.2.1">17.2.1 
      二维数组基本语法</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.2.2">17.2.2 
      二维数组初始化</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.2.3">17.2.3 
      二维数组的内存结构</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.2.4">17.2.4 
      二维数组的内存地址</A>
      <P><A href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.3">17.3 
      二维数组实例</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.3.1">17.3.1 
      用二维数组做字模</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.3.2">17.3.2 
      二维数组在班级管理程序中应用</A>
      <P><A href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.4">17.4 
      三维和更多维数组</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.4.1">17.4.1 
      多维数组的定义与初始化</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.4.2">17.4.2 
      多维数组的<SPAN lang=zh-cn>示例</SPAN></A>
      <P><A href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.5">17.5 
      数组作为函数的参数</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.5.1">17.5.1 
      数组参数默认是传址方式</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.5.2">17.5.2 
      可以不指定元素个数</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.5.3">17.5.3 
      数组作为函数参数的上机实例</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.5.4">17.5.4 
      二维及更多维数组作为函数参数</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.5.5">17.5.5 
      函数的返回值类型不能是数组</A>
      <P><A href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.6">17.6 
      sizeof<SPAN lang=zh-cn>用在数组上</SPAN></A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.6.1">17.6.1 
      用sizeof自动计算元素个数</A>
      <P>&nbsp; <A 
      href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.6.2">17.6.2 
      sizeof对数组参数不可用</A>
      <P> </P>
      <H3><B><A name=17.1>17.1</A> 数组与内存</B></H3>
      <P>变量需要占用内存空间,内存空间有地址。<SPAN 
      lang=zh-cn>不同数据类型的变量,可能占用不同的内存大小及有不同的内存结构。</SPAN></P>
      <P><SPAN 
      lang=zh-cn>以前我们所学都称为“简单数据类型”,如:</SPAN>int,char,float,double,bool<SPAN 
      lang=zh-cn>。像</SPAN> char,bool,<SPAN 
      lang=zh-cn>只占用一个字节,所以我们不去管它的的“结构”,其余如</SPAN>int,float,double<SPAN 
      lang=zh-cn>占用多个字节,但比较简单,适当的时候我们会去探讨4个字节是如何组成一个整数。</SPAN></P>
      <P><SPAN 
      lang=zh-cn>后来我们学习了数组。数组变量占用内存的大小是不定的,因为不同的数组变量除了类型可以不同,还可以拥有不同个数的元素,这两点都影响它的大小。</SPAN></P>
      <P> </P>
      <P><SPAN 
      lang=zh-cn>因此,数组是我们第一个要着力研究它的结构的数据类型。和后面我们还要学习的更多数据类型相比,数组的结构还是相当简单的。简单就简单在它的各个元素大小一致,整整齐齐地排列。</SPAN></P>
      <P> </P>
      <H4><B><A name=17.1.1>17.1.1</A> 数组的内存结构</B></H4>
      <P>变量需要占用内存空间,内存空间有地址。</P>
      <P> </P>
      <P>声明一个整型变量</P>
      <P> </P>
      <P><SPAN lang=en-us>int a;</SPAN></P>
      <P> </P>
      <P>系统会为该变量申请相应大小的空间,一个int类型的变量时,需要占用4个字节的空间,如下图:</P>
      <P><IMG height=125 src="教学--第十七章 数组(二).files/ls001.gif" width=385 
      border=0></P>
      <P>也就是说,一个 int 类型的变量,它的内存结构就是 “4个连续的字节”。</P>
      <P> </P>
      <P>当我们声明一个数组:<SPAN lang=en-us>int arr[100];</SPAN></P>
      <P> </P>
      <P>我们可以想像,<SPAN lang=en-us>arr</SPAN>数组在内存中占用了100 <SPAN lang=en-us>* 
      sizeof(int)</SPAN> 个字节。</P>
      <P> </P>
      <P>现在请大家打开<SPAN lang=en-us>Windows</SPAN>的画笔程序,家画一个数组的内存结构示意图。</P>
      <P> </P>
      <H4><B><A name=17.1.2>17.1.2</A> 数组的内存地址</B></H4>
      <P> </P>
      <P>一个<SPAN 
lang=en-us>int</SPAN>类型变量,占用4个字节的内存,其中第一个字节的位置,我们称为该变量的内存地址。</P>
      <P>同样,一个数组变量,占用一段连续的内存,其中第一个字节的位置,我们称为该数组变量的内存地址。</P>
      <P> </P>
      <P>还记得 <SPAN lang=en-us>&amp; </SPAN>这个符号吗?通过它我们可以得到指定变量的内存地址。</P>
      <P> </P>
      <P><SPAN lang=en-us>int a;</SPAN></P>
      <P><SPAN lang=en-us>cout &lt;&lt; &amp;a &lt;&lt; endl;</SPAN></P>
      <P> </P>
      <P><SPAN lang=en-us>&amp; </SPAN>称为“取址符”。如果你有点记不清,可以查看以前的课程。</P>
      <P> </P>
      <P>本章第一个需要你特别注意的内容来了:</P>
      <P>查看数组变量的地址,不需要使用<SPAN lang=en-us> &amp; 
      </SPAN>。下面的话是一个原因也是一个结论,你必须记住。</P>
      <P> </P>
      <P><FONT 
      color=#ff0000><B>C,C++语言中,对数组变量的操作,就相当于直接对该数组变量的地址的操作。</B></FONT></P>
      <P> </P>
      <P>因此,想要查看一个数组变量的地址,代码为:</P>
      <P> </P>
      <P><SPAN lang=en-us>int arr[10];</SPAN></P>
      <P><SPAN lang=en-us>cout &lt;&lt; arr &lt;&lt; endl;&nbsp; 
      //</SPAN>注意,<SPAN lang=en-us>arr</SPAN>之前无需<SPAN lang=en-us> &amp; 
      </SPAN>。</P>
      <P> </P>
      <P>现在,请大家打开<SPAN lang=en-us>CB,</SPAN>然后将上面代码写成完整的一个控制台程序,看看输出结果。</P>
      <P> </P>
      <H4><B><A name=17.1.3>17.1.3</A> 数组元素的内存地址</B></H4>
      <P> </P>
      <P>一个数组变量包含多个连续的元素,每一个元素都是一个普通变量。因此,对就像对待普通变量一样可以通过<SPAN 
      lang=en-us>&amp;</SPAN>来取得地址:</P>
      <P> </P>
      <P><SPAN lang=en-us>//</SPAN>查看数组中第一个元素的地址:</P>
      <P><SPAN lang=en-us>int arr[10];</SPAN></P>
      <P><SPAN lang=en-us>cout &lt;&lt; &amp;arr[0] &lt;&lt; endl;</SPAN></P>
      <P> </P>
      <P><B>例一:</B></P>
      <P>现在,请大家在CB里继续上一小节的代码,要求:用一个<SPAN lang=en-us>for</SPAN>循环,输出数组<SPAN 
      lang=en-us>arr</SPAN>中每一个元素的地址。</P>
      <P>如果你已完成,现在来看我的答案。</P>
      <P> </P>
      <P><SPAN lang=en-us>#include &lt;iostream.h&gt;</SPAN></P>
      <P><SPAN lang=en-us>...</SPAN></P>
      <P><SPAN lang=en-us>int arr[10];</SPAN></P>
      <P> </P>
      <P><SPAN lang=en-us>for(int i=0; i&lt;10; i++)</SPAN></P>
      <P><SPAN lang=en-us>&nbsp;&nbsp;&nbsp; cout &lt;&lt; &amp;arr[i] &lt;&lt; 
      endl;</SPAN></P>
      <P><SPAN lang=en-us>...</SPAN></P>
      <P><SPAN lang=en-us>cin.get();</SPAN></P>
      <P> </P>
      <P>我们把它和前面输出数组地址的例子结合起来,然后观察输出结果。</P>
      <P> </P>
      <P><SPAN lang=en-us>...</SPAN></P>
      <P><SPAN lang=en-us>int arr[10];</SPAN></P>
      <P> </P>
      <P><SPAN lang=en-us>//</SPAN>输出数组的地址:</P>
      <P><SPAN lang=en-us>cout &lt;&lt; "</SPAN>数组<SPAN 
      lang=en-us>arr</SPAN>的地址:<SPAN lang=en-us> " &lt;&lt; arr &lt;&lt; 
      endl;</SPAN></P>
      <P> </P>
      <P><SPAN lang=en-us>//</SPAN>输出每个元素的地址:</P>
      <P><SPAN lang=en-us>for(int i=0; i&lt;10; i++)</SPAN></P>
      <P><SPAN lang=en-us>&nbsp;&nbsp;&nbsp; cout &lt;&lt; "</SPAN>元素<SPAN 
      lang=en-us>arr[" &lt;&lt;i &lt;&lt;"]</SPAN>的地址:<SPAN lang=en-us>" 
      &lt;&lt; &amp;arr[i] &lt;&lt; endl;</SPAN></P>
      <P> </P>
      <P><SPAN lang=en-us>...</SPAN></P>
      <P> </P>
      <P>输出结果:</P>

⌨️ 快捷键说明

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