<!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
最新资源
- 模拟IC设计实践:buck型DCDC设计在SMIC 18工艺下的aot自适应导通模式应用,输出0.6V,最大负载电流达1.2A,低纹波,PWM与PFM灵活切换,Cadence仿真可视化助力初学者实践学
- Windows11家庭版开启Hyper-V
- PSI5标准协议:V2.3
- 1_base_114505.apk
- 电动汽车削峰填谷充放电优化调度策略:综合负荷、电池损耗与峰谷平衡的三目标优化求解,基于MATLAB YALMIP+CPLEX平台的电动汽车削峰填谷多目标充放电优化调度策略:降低负荷波动与电池损耗成本
- 整车控制器VCU模型详解:控制策略、接口定义与使用说明书全解析,整车控制器VCU模型与接口定义文档详解及高效控制策略说明书,整车控制器VCU模型,控制策略,说明书,接口定义文档 ,核心关键词:整车控制
- 汇川电子凸轮双轴绕线例程详解:自动绕线A1431与取料对接,精准计算圈数及完成信号输出,汇川easy523+HMI电子凸轮双轴绕线系统:精准绕线,自动计算,对接取料机,高效生产产品A1431,汇川ea
- C#读取Ollama api DeepSeek和其他模型接口桌面小程序
- vsphere连接工具VMware-viclient-all-5.0.0-455964.exe
- spring基础说明文档
- FPGA图像处理中的Sobel算子实现与应用:从算法原理到Matlab仿真及FPGA实现的完整项目教学 ,FPGA图像处理项目:基于Sobel算子的3x3滤波框架设计与仿真实现,FPGA图像处理.so
- DeepSeek赋能职场:从提示语技巧到多场景应用的人机协同解决方案
- 基于YOLOv5的旋转框目标检测:从标注转换到模型训练与测试的完整流程指南,基于YOLOv5的旋转框目标检测:DLOO402标注转换与训练全流程指南,DL00402-基于YOLOv5的旋转框目标检测
- 基于Simulink仿真的永磁同步电机模型预测电流控制技术研究,永磁同步电机模型预测电流控制Simulink仿真设计与实现,永磁同步电机模型预测电流控制Simulink仿真 ,核心关键词:永磁同步电机
- springboot246老年一站式服务平台_zip.zip
- fatFS 适用于微控制器fatFSfatFSfatFSfatFSfatFSfatFSfatFSfatFS
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


