📄 c62.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>指针和结构 </title>
<script language="javascript">
var prePage="c/c6/c61.htm";
var nextPage="c/c6/c63.htm";
</script>
<link rel="stylesheet" href="../cstyle.css" type="text/css">
</head>
<body background="../img/mainback.jpg" bgproperties="fixed">
<h2 align="center"><a name="_top"></a><font face="楷体_GB2312">6.2 <font COLOR="#000000">指针和结构</font></font></h2>
<div align="center"><center>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="25%" align="center"><a href="c62.htm#c621.html#c621">指向结构的指针</a>
</td>
<td width="25%" align="center"><a href="c62.htm#c622.html#c622">包含指针的结构</a></td>
<td width="25%" align="center"><a href="c62.htm#c623.html#c623">链接表</a></td>
</tr>
</table>
</center></div>
<hr>
<h3><a name="c621"></a>1.指向结构的指针 </h3>
<blockquote>
<p>说明了一个结构指针变量是容易的,
这就如同说明一个基本数据类型指针变量一样。<br>
为此, 我们可以如下边那样, 说明一个指向结构的指针变量。<br>
<br>
<strong><font color="#000080"><big>struct date * date_pointer;</big><br>
</font></strong>struct date<br>
{<br>
int month;<br>
int day;<br>
int year; <br>
} st<br>
设: date_pointer=&st ,则 date_pointer 的值为 st 的首地址。<br>
<br>
在说明了一个结构之后, 我们就可以如下那样访问这个结构:<ol>
<li>(*date_pointer).day</li>
<li>date_pointer->day</li>
<li>todays_date.day </li>
</ol>
<p>表达式1 和表达式2
是使用指针来访问结构成员的等价的两种方法,表达式3
是结构成员的普通的访问方法。</p>
<p align="right"><a href="c62.htm#_top.html#_top">返回页首</a></p>
</blockquote>
<hr>
<h3><a name="c622"></a>2.包含指针的结构</h3>
<blockquote>
<p>struct int_pointers<br>
{<br>
<font color="#000080"><strong><big> int * p1;<br>
int * p2;</big></strong></font><br>
};<br>
正如你在此看到的那样,
结构成员也可以是指针。我们定义了一个结构 int_pointers,
它包含两个指针成员: p1, p2。你可以象对待普通指针变量那样来对待成员
p1, p2。当你说明了一个结 构变量 st_ptr 时,可以来用下面的格式来使用其成员:<br>
<strong><font color="#FF0000"><big>st_ptr.p1 ,st_ptr.p2 </big></font></strong></p>
<p align="right"><br>
<a href="c62.htm#_top.html#_top">返回页首</a></p>
</blockquote>
<hr>
<h3><a name="c623"></a>3.链接表</h3>
<blockquote>
<p>现在, 我们来讨论下面三个方面的问题。<br>
( 1 ) 链接若干结构变量的方法。 <br>
( 2 ) 链接表成员的插入和删除的方法。<br>
( 3 ) 链接表的链首和链尾的处置方法。<br>
<br>
我们已经学过了指针, 指向结构的指针和包含指针的结构,
我们可以用它们来构造出复杂的数据结构, 例如: 链接表。<br>
首先, 你可以定义一个结构, 其名字为 entry。<br>
struct entry<br>
{<br>
int value;<br>
struct entry *next;<br>
};<br>
<br>
这个结构有两个成员, 第一个成员是整型的 value。第二个是指针类型的
next , 它指向 entry 类型的变量。</p>
<p class="note">请记住下列事项: 在 C 语言中,
结构成员可以是指向该结构类型变量的指针。 这一点是很重要的。 </p>
<p>当你已经定义过结构之后, 你就可以说明一些变量,
然后生成一个链接表, 请看: </p>
<p>我们先定义四个变量:struct entry n1,n2,n3,n4;</p>
<p><br>
<!-- Aftershock c623.swf 3=510 4=130 40 --> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=3,0,0,0" ID="c622"
WIDTH="505" HEIGHT="300">
<param name="movie" value="../movie/c623.swf">
<param name="quality" value="autohigh">
<param name="bgcolor" value="#FFFFCC"><embed SRC="../movie/c623.swf" swLiveConnect="FALSE" WIDTH="505" HEIGHT="300"
QUALITY="autohigh" BGCOLOR="#FFFFCC" TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
</object>
<!-- EndAftershock c623.swf --> <br>
</p>
<p align="right"><a href="c62.htm#_top.html#_top">返回页首</a></p>
</blockquote>
<p align="center"><a href="http://www.nec.sjtu.edu.cn/support/Course/C/c/c6/c63.htm"><img src="../img/next.gif" width="145" height="30"
alt="next.gif (3633 bytes)" border="0"></a></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -