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

📄 00000011.htm

📁 一份很好的linux入门资料
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;<A HREF="mailto:ax.bbs@bbs.ee.nthu.edu.tw.">ax.bbs@bbs.ee.nthu.edu.tw.</A>&nbsp;(athena),&nbsp;信区:&nbsp;test&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;星星流讲座&nbsp;0035&nbsp;<BR>发信站:&nbsp;☆清华电机☆&nbsp;(Thu&nbsp;Jul&nbsp;&nbsp;6&nbsp;21:41:10&nbsp;1995)&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>第&nbsp;5&nbsp;讲&nbsp;之&nbsp;11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;阵列与指标&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Topic:&nbsp;Multi-dimensional&nbsp;array&nbsp;<BR>&nbsp;<BR>C&nbsp;语言支援多维阵列,它的宣告方式很简单,例如我们要宣告一个&nbsp;<BR>2x2&nbsp;的整数阵列:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;a[2][2];&nbsp;<BR>&nbsp;<BR>更高维数的依此类推:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;b[3][3][3];&nbsp;<BR>&nbsp;<BR>请注意多维阵列在&nbsp;C&nbsp;中是以&nbsp;a[1][2]&nbsp;这种形式出现,和其他高阶语言常见&nbsp;<BR>的&nbsp;a(1,2)&nbsp;或&nbsp;a[1,2]&nbsp;不同,这是容易犯错的地方。&nbsp;<BR>&nbsp;<BR>C&nbsp;语言以&nbsp;row&nbsp;major&nbsp;的方式来处理多维阵列,亦即&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;a[2][2];&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;[row][column]&nbsp;*/&nbsp;<BR>&nbsp;<BR>多维阵列和指标阵列在资料的存放上有很大的不同,例如:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*name[]&nbsp;=&nbsp;{&quot;Susan&quot;,&nbsp;&quot;Elizabeth&quot;,&nbsp;&quot;Jay&quot;};&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;name[][10]&nbsp;=&nbsp;{&quot;Susan&quot;,&nbsp;&quot;Elizabeth&quot;,&nbsp;&quot;Jay&quot;};&nbsp;<BR>&nbsp;<BR>上面的例子中,我们并没有给定第一维的维数,这是因为第一维的维数不&nbsp;<BR>必给,compiler&nbsp;会自己替你决定,但是第二维以後的维数你必须自己指定。&nbsp;<BR>同样的情形也发生在把多维阵列当做函数的参数传递上,例如:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foo&nbsp;(a[][10]);&nbsp;<BR>&nbsp;<BR>你必须指定第二维以後的维数,否则将发生错误。为什麽?我们先卖&nbsp;<BR>个关子。先来看看&nbsp;*name[]&nbsp;的存放方式和&nbsp;name[][10]&nbsp;有什麽不同,请看下图:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*name[]&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┌┐&nbsp;&nbsp;+-------+&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│┼→|Susan\0|&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├┤&nbsp;&nbsp;+-------+---+&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│┼→|Elizabeth\0|&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├┤&nbsp;&nbsp;+-----+-----+&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│┼→|Jay\0|&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;└┘&nbsp;&nbsp;+-----+&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name[][10]&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+-----------------------------------+&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|Susan\0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Elizabeth\0&nbsp;Jay\0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+-----------------------------------+&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>我们可以看到&nbsp;name[][10]&nbsp;是配置了&nbsp;3&nbsp;*&nbsp;10&nbsp;=&nbsp;30&nbsp;的空间,然後把二维阵列&nbsp;<BR>转换成一维阵列储存,这也就是&nbsp;C&nbsp;语言对付多维阵列的方法:把它转化为一&nbsp;<BR>维阵列存放。因此,如果你在传递多维阵列时不给定第二维以後的维数的话,&nbsp;<BR>compiler&nbsp;就不能正确的计算阵列中各个元素存放的位置,因此会发生错误。&nbsp;<BR>由上面的图形我们可以很明显的区分&nbsp;*name[]&nbsp;和&nbsp;name[][10]&nbsp;的差别,一般&nbsp;<BR>而言以&nbsp;*name[]&nbsp;这种形式来存放资料是比较省空间的,但这并不绝对。&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>本文原作者为徐振家,原作刊载於星星神教总坛&nbsp;☆清华电机☆&nbsp;test&nbsp;板。&nbsp;<BR>你可以以电子文件的形式将本文自由流传於台湾学术网路,但必须包含此版权声明。&nbsp;<BR>原作者依中华民国著作权法之规定,享有本文之著作权,请勿抄袭以免触法。&nbsp;<BR>未经授权任何人不得以任何形式对本文做任何修改及商业上之应用。&nbsp;<BR>其他网路的转载或其他用途的应用,请先知会作者,并取得其同意。&nbsp;<BR>对本文有任何疑问或意见请&nbsp;mail&nbsp;给&nbsp;<A HREF="mailto:ax.bbs@bbs.ee.nthu.edu.tw,谢谢。">ax.bbs@bbs.ee.nthu.edu.tw,谢谢。</A>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

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