<!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: ËÎÌå"
width="100%" height=210>
<H2>第十七章 数组(二)</H2>
<P><A href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.1">17.1
数组与内存</A>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.1.1">17.1.1
数组的内存结构</A>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.1.2">17.1.2
数组的内存地址</A>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.1.3">17.1.3
数组元素的内存地址</A>
<P> <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> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.2.1">17.2.1
二维数组基本语法</A>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.2.2">17.2.2
二维数组初始化</A>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.2.3">17.2.3
二维数组的内存结构</A>
<P> <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> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.3.1">17.3.1
用二维数组做字模</A>
<P> <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> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.4.1">17.4.1
多维数组的定义与初始化</A>
<P> <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> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.5.1">17.5.1
数组参数默认是传址方式</A>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.5.2">17.5.2
可以不指定元素个数</A>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.5.3">17.5.3
数组作为函数参数的上机实例</A>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.5.4">17.5.4
二维及更多维数组作为函数参数</A>
<P> <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> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls17.htm#17.6.1">17.6.1
用sizeof自动计算元素个数</A>
<P> <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>& </SPAN>这个符号吗?通过它我们可以得到指定变量的内存地址。</P>
<P> </P>
<P><SPAN lang=en-us>int a;</SPAN></P>
<P><SPAN lang=en-us>cout << &a << endl;</SPAN></P>
<P> </P>
<P><SPAN lang=en-us>& </SPAN>称为“取址符”。如果你有点记不清,可以查看以前的课程。</P>
<P> </P>
<P>本章第一个需要你特别注意的内容来了:</P>
<P>查看数组变量的地址,不需要使用<SPAN lang=en-us> &
</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 << arr << endl;
//</SPAN>注意,<SPAN lang=en-us>arr</SPAN>之前无需<SPAN lang=en-us> &
</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>&</SPAN>来取得地址:</P>
<P> </P>
<P><SPAN lang=en-us>//</SPAN>查看数组中第一个元素的地址:</

vain2008
- 粉丝: 1
- 资源: 5
最新资源
- Vim魔改指南:C语言代码补全、静态检查、一键编译配置.pdf
- VSCode2025终极配置指南:C语言开发环境搭建+调试技巧.pdf
- VSCode+C环境配置终极方案.pdf
- VSCode+C环境配置:一键搭建高效开发环境.pdf
- VSCode配置C语言环境:插件+调试技巧打造高效开发工作流.pdf
- 保研、面试必杀技:C语言高频考点精讲.pdf
- VSCode配置C语言环境:一键搞定编译调试+代码美化.pdf
- 变量作用域陷阱:为什么你的值总被吃掉?.pdf
- 避开C语言初学的15个天坑!华为大佬亲授避雷秘籍.pdf
- 编译错误终结手册:从missingsemicolon到未定义行为.pdf
- 初学必看!C语言语法陷阱大全:从分号到数组越界的避坑手册.pdf
- 彻底搞懂指针:从内存地址到高级应用的10个关键场景.pdf
- 彻底搞懂C语言指针:从内存地址到高级应用的10个实战案例.pdf
- 从C语言到C++、Java:掌握底层思维对学习高级语言的关键作用.pdf
- 从单片机到操作系统:C语言在不同领域的应用全景图.pdf
- 从C到C++:为什么学透C语言是进阶的必经之路?.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


