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

📄 43.htm

📁 c语言基本的应用便于初学者学习使用 简单易懂
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb_2312-80">
<meta name="Author" content="wdg">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>网上学堂 --> C语言编程宝典之一 -->联 合(union)</title>
</head>

<body>

<p> </p>
<div align="center"><center>

<table border="1" cellpadding="4" width="640"
bordercolordark="#FFFFFF" bordercolorlight="#FFFFFF">
    <tr>
        <td bgcolor="#FFE6B0" bordercolor="#8080FF" class="p9"><font
        color="#BB0000">导航条:--&gt;</font> <a
        href="../../index.html">网上学堂</a> --&gt; <a
        href="../tcindex.htm"><font face="宋体">C</font>语言编程宝典之一</a>
        --&gt;联&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 合(union)</td>
    </tr>
    <tr>
        <td bordercolor="#8080FF" class="p9"><p> </p>
        <p>&nbsp;&nbsp;&nbsp; 1.
        联合说明和联合变量定义 <br>
        &nbsp;&nbsp;&nbsp; 联合也是一种新的数据类型,
        它是一种特殊形式的变量。 <br>
        &nbsp;&nbsp;&nbsp;
        联合说明和联合变量定义与结构十分相似。其形式为:
        <br>
        &nbsp;&nbsp;&nbsp;&nbsp; union 联合名{ <br>
        &nbsp;&nbsp;&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;
        ... <br>
        &nbsp;&nbsp;&nbsp;&nbsp; } 联合变量名; <br>
        &nbsp;&nbsp;&nbsp;
        联合表示几个变量公用一个内存位置,
        在不同的时间保存不同的数据类型 <br>
        和不同长度的变量。 <br>
        &nbsp;&nbsp;&nbsp; 下例表示说明一个联合a_bc: <br>
        &nbsp;&nbsp;&nbsp;&nbsp; union a_bc{ <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        int i; <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        char mm; <br>
        &nbsp;&nbsp;&nbsp;&nbsp; }; <br>
        &nbsp;&nbsp;&nbsp;
        再用已说明的联合可定义联合变量。 <br>
        &nbsp;&nbsp;&nbsp;
        例如用上面说明的联合定义一个名为lgc的联合变量,
        可写成: <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union a_bc lgc; <br>
        &nbsp;&nbsp;&nbsp; 在联合变量lgc中, 整型量i和字符mm公用同一内存位置。
        <br>
        &nbsp;&nbsp;&nbsp; 当一个联合被说明时,
        编译程序自动地产生一个变量,
        其长度为联合中最大 <br>
        的变量长度。 <br>
        &nbsp;&nbsp;&nbsp;
        联合访问其成员的方法与结构相同。同样联合变量也可以定义成数组或指针,
        <br>
        但定义为指针时, 也要用&quot;-&gt;&quot;符号,
        此时联合访问成员可表示成: <br>
        &nbsp;&nbsp;&nbsp;&nbsp; 联合名-&gt;成员名 <br>
        &nbsp;&nbsp;&nbsp; 另外,
        联合既可以出现在结构内,
        它的成员也可以是结构。 <br>
        &nbsp;&nbsp;&nbsp; 例如: <br>
        &nbsp;&nbsp;&nbsp;&nbsp; struct{ <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        int age; <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        char *addr; <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        union{ <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        int i; <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        char *ch; <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        }x; <br>
        &nbsp;&nbsp;&nbsp;&nbsp; }y[10]; <br>
        &nbsp;&nbsp;&nbsp; 若要访问结构变量y[1]中联合x的成员i,
        可以写成: <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y[1].x.i; <br>
        &nbsp;&nbsp;&nbsp; 若要访问结构变量y[2]中联合x的字符串指针ch的第一个字符可写成:
        <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *y[2].x.ch; <br>
        &nbsp;&nbsp;&nbsp; 若写成&quot;y[2].x.*ch;&quot;是错误的。
        </p>
        <p>&nbsp;&nbsp;&nbsp; 2. 结构和联合的区别 <br>
        &nbsp;&nbsp;&nbsp; 结构和联合有下列区别: <br>
        &nbsp;&nbsp;&nbsp; 1.
        结构和联合都是由多个不同的数据类型成员组成,
        但在任何同一时刻, <br>
        联合中只存放了一个被选中的成员,
        而结构的所有成员都存在。 <br>
        &nbsp;&nbsp;&nbsp; 2. 对于联合的不同成员赋值,
        将会对其它成员重写,&nbsp;
        原来成员的值就不存 <br>
        在了,
        而对于结构的不同成员赋值是互不影响的。
        <br>
        &nbsp;&nbsp;&nbsp;
        下面举一个例了来加对深联合的理解。 <br>
        &nbsp;&nbsp;&nbsp; 例4: <br>
        &nbsp;&nbsp;&nbsp;&nbsp; main() <br>
        &nbsp;&nbsp;&nbsp;&nbsp; { <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        union{&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;
        int i; <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        struct{&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;
        char first; <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        char second; <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        }half; <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        }number; <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        number.i=0x4241;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        /*联合成员赋值*/ <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        printf(&quot;%c%c\n&quot;, number.half.first,
        mumber.half.second); <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        number.half.first='a';&nbsp;&nbsp; /*联合中结构成员赋值*/
        <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        number.half.second='b'; <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        printf(&quot;%x\n&quot;, number.i); <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        getch(); <br>
        &nbsp;&nbsp;&nbsp;&nbsp; } <br>
        &nbsp;&nbsp;&nbsp; 输出结果为: <br>
        &nbsp;&nbsp;&nbsp;&nbsp; AB <br>
        &nbsp;&nbsp;&nbsp;&nbsp; 6261 <br>
        &nbsp;&nbsp;&nbsp; 从上例结果可以看出: 当给i赋值后,
        其低八位也就是first和second的值; <br>
        当给first和second赋字符后, 这两个字符的ASCII码也将作为i
        的低八位和高八 <br>
        位。 <br>
        &nbsp; </p>
        </td>
    </tr>
</table>
</center></div><div align="center"><center>

<table border="0" cellspacing="1" width="640">
    <tr>
        <td class="p9" height="60">  <script>document.write("<p><a href=\"http://view.gznet.com/cgi-bin/rl_views.cgi?UID=10013421\" target=sxrl>"); 
document.write("<img src=\"http://refer.gznet.com/cgi-bin/rl_refer2.cgi?UID=10013421&refer="+escape(top.document.referrer)+"\" width=1 height=1 border=0 alt=\"  \">"); 
document.write("</a>"); 
</script></td>
    </tr>
</table>
</center></div>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
</body>
</html>

⌨️ 快捷键说明

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