content_views"
class="htmledit_views">
class="MsoNormal" style="margin: 0cm 0cm 0pt;">ckground: yellow; color: purple; font-family: Verdana; mso-highlight: yellow;" lang="EN-US">Cckground: yellow; color: purple; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-highlight: yellow;">class="tags" href="/tags/YuYan.html" title=语言>语言支持一种叫做ckground: yellow; color: purple; font-family: Verdana; mso-highlight: yellow;" lang="EN-US">typedefckground: yellow; color: purple; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-highlight: yellow;">的机制c;它允许你为各种数据类型定义新的名字color: purple; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">。color: purple; font-family: Verdana;" lang="EN-US">typedefcolor: purple; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">声明的写法和普通的声明基本相同c;只是让color: purple; font-family: Verdana;" lang="EN-US">typedefcolor: purple; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">这个关键字出现在声明的前面。例如c;下面这个声明:color: purple; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: purple; font-family: Verdana;" lang="EN-US">char *ptr_to_char;
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: purple; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">把变量color: purple; font-family: Verdana;" lang="EN-US">ptr_to_charcolor: purple; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">声明为一个指向字符的指针。但是c;在添加了关键字color: purple; font-family: Verdana;" lang="EN-US">typedefcolor: purple; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">后c;声明变为:color: purple; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: purple; font-family: Verdana;" lang="EN-US">typedef char *ptr_to_char;
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: purple; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">这个声明把标示符color: purple; font-family: Verdana;" lang="EN-US">ptr_to_charcolor: purple; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">作为指向字符的指针类型的新名字。你可以像使用任何预定义名字一样在声明中使用这个新名字c;例如:color: purple; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: purple; font-family: Verdana;" lang="EN-US">ptr_to_char a;cerun: yes;"> //color: purple; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">声明color: purple; font-family: Verdana;" lang="EN-US">acolor: purple; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">是一个指向字符的指针。color: purple; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt;">ckground: yellow; color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-highlight: yellow;">使用ckground: yellow; color: navy; font-family: Verdana; mso-highlight: yellow;" lang="EN-US">typedefckground: yellow; color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-highlight: yellow;">声明类型可以减少使声明变得又臭又长的危险c;尤其是那些复杂的声明color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">。而且c;如果你以后觉得应该修改程序使用的一些数据的类型时c;修改一个color: navy; font-family: Verdana;" lang="EN-US">typedefcolor: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">声明比修改程序中与这种类型有关的所有变量color: navy; font-family: Verdana;" lang="EN-US">(color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">和函数color: navy; font-family: Verdana;" lang="EN-US">)color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">的所有声明要容易得多。color: navy; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: navy; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: navy; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">一般情况下c;color: navy; font-family: Verdana;" lang="EN-US">typedefcolor: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">用于简洁地表示指向其他东西的指针。典型的例子是color: navy; font-family: Verdana;" lang="EN-US">class="tags" href="/tags/SIGNAL.html" title=signal>signal()color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">原型的声明。color: navy; font-family: Verdana;" lang="EN-US">Signal()color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">是一种系统调用c;用于通知运行时系统c;当某种特定的软件中断发生时调用特定的程序。调用color: navy; font-family: Verdana;" lang="EN-US">class="tags" href="/tags/SIGNAL.html" title=signal>signal()color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">时c;通过参color: #333399; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">数传递告诉它中断的类型以及用于处理中断的程序。在color: #333399; font-family: Verdana;" lang="EN-US">ANSI C color: #333399; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">标准中c;color: #333399; font-family: Verdana;" lang="EN-US">class="tags" href="/tags/SIGNAL.html" title=signal>signalcolor: #333399; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">的声明如下:color: #333399; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: #333399; font-family: Verdana;" lang="EN-US">void ( *class="tags" href="/tags/SIGNAL.html" title=signal>signal( int sig, coration: underline;">void( *func )( int ) ) )( int );
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">让我们分析一下这个函数:color: navy; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: navy; font-family: Verdana;" lang="EN-US">void( *class="tags" href="/tags/SIGNAL.html" title=signal>signal( color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">·····color: navy; font-family: Verdana;" lang="EN-US"> ) )( int );
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: #333399; font-family: Verdana;" lang="EN-US">class="tags" href="/tags/SIGNAL.html" title=signal>signalcolor: #333399; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">是一个函数指针c;其所指向的函数接受一个color: #333399; font-family: Verdana;" lang="EN-US">intcolor: #333399; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">参数并返回color: #333399; font-family: Verdana;" lang="EN-US">voidcolor: #333399; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">。color: #333399; font-family: Verdana;" lang="EN-US">class="tags" href="/tags/SIGNAL.html" title=signal>signalcolor: #333399; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">其中的一个参数为:color: #333399; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: #333399; font-family: Verdana;" lang="EN-US">void( *func )( int )
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: #333399; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">它表示一个函数指针c;所指向的函数接受一个color: #333399; font-family: Verdana;" lang="EN-US">intcolor: #333399; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">参数并返回color: #333399; font-family: Verdana;" lang="EN-US">voidcolor: #333399; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">。现在c;让我们看一下怎样用color: #333399; font-family: Verdana;" lang="EN-US">typedefcolor: #333399; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">来代表通用部分c;从而简化该声明:color: #333399; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: #333399; font-family: Verdana;" lang="EN-US">//ptr_to_funccolor: #333399; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">是一个函数指针c;该函数接受一个整型参数c;返回值为color: #333399; font-family: Verdana;" lang="EN-US">void
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: #333399; font-family: Verdana;" lang="EN-US">typedef void(*ptr_to_func)(int);
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: #333399; font-family: Verdana;" lang="EN-US">//class="tags" href="/tags/SIGNAL.html" title=signal>signalcolor: #333399; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">是一个函数c;它接受两个参数c;其中一个是color: #333399; font-family: Verdana;" lang="EN-US">intcolor: #333399; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">c;另一个是color: #333399; font-family: Verdana;" lang="EN-US">ptr_to_funccolor: #333399; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">c;返回值是color: #333399; font-family: Verdana;" lang="EN-US">ptr_to_func
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: #333399; font-family: Verdana;" lang="EN-US">ptr_to_func class="tags" href="/tags/SIGNAL.html" title=signal>signal( int, ptr_to_funccerun: yes;"> );
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: navy; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: navy; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: navy; font-family: Verdana;" lang="EN-US">typedef color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">和color: navy; font-family: Verdana;" lang="EN-US">definecolor: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">的一些区别:color: navy; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt;">ckground: yellow; color: navy; font-family: Verdana; mso-highlight: yellow;" lang="EN-US">1ckground: yellow; color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-highlight: yellow;">、可以用其他类型说明符对宏类型名进行class="tags" href="/tags/KuoZhan.html" title=扩展>扩展c;但对ckground: yellow; color: navy; font-family: Verdana; mso-highlight: yellow;" lang="EN-US">typedefckground: yellow; color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-highlight: yellow;">所定义的类型名却不能这么做color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">c;如下所示:color: navy; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 10pt; mso-line-height-rule: exactly;">color: purple; font-family: Verdana;" lang="EN-US">cerun: yes;"> #define peach int
class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 10pt; mso-line-height-rule: exactly;">color: purple; font-family: Verdana;" lang="EN-US">cerun: yes;"> Unsigned peach i ;cerun: yes;"> /*color: purple; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">没问题color: purple; font-family: Verdana;" lang="EN-US">*/
class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 10pt; mso-line-height-rule: exactly;">color: purple; font-family: Verdana;" lang="EN-US">cerun: yes;"> typedef int banana;
class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 10pt; mso-line-height-rule: exactly;">color: purple; font-family: Verdana;" lang="EN-US">cerun: yes;"> unsigned bababa i;cerun: yes;"> /*color: purple; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">错误!color: purple; font-family: Verdana;" lang="EN-US">*/
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: navy; font-family: Verdana;" lang="EN-US">2color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">、ckground: yellow; mso-highlight: yellow;">在连续几个变量的声明中c;用ckground: yellow; color: navy; font-family: Verdana; mso-highlight: yellow;" lang="EN-US">typedefckground: yellow; color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-highlight: yellow;">定义的类型能够保证声明中所有的变量均为同一种类型c;而用ckground: yellow; color: navy; font-family: Verdana; mso-highlight: yellow;" lang="EN-US">#defineckground: yellow; color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-highlight: yellow;">定义的类型则无法保证c;如下所示:color: navy; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 10pt; mso-line-height-rule: exactly;">color: purple; font-family: Verdana;" lang="EN-US">cerun: yes;"> #define int_ptr int *
class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 10pt; mso-line-height-rule: exactly;">color: purple; font-family: Verdana;" lang="EN-US">cerun: yes;"> int_ptr chalk, cheese;cerun: yes;">
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: navy; font-family: Verdana;" lang="EN-US">cerun: yes;"> color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">经过宏class="tags" href="/tags/KuoZhan.html" title=扩展>扩展c;第二行变为color: navy; font-family: Verdana;"> color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">:color: navy; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 10pt; mso-line-height-rule: exactly;">color: purple; font-family: Verdana;" lang="EN-US">cerun: yes;"> int * chalk, cheese;
class="MsoNormal" style="margin: 0cm 0cm 0pt;">color: navy; font-family: Verdana;" lang="EN-US">cerun: yes;"> color: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">这使得color: navy; font-family: Verdana;" lang="EN-US">chalkcolor: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">和color: navy; font-family: Verdana;" lang="EN-US">cheesecolor: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">成为不同的类型c;color: navy; font-family: Verdana;" lang="EN-US">chalkcolor: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">是一个指向color: navy; font-family: Verdana;" lang="EN-US">intcolor: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">的指针c;而color: navy; font-family: Verdana;" lang="EN-US">cheesecolor: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">则是一个color: navy; font-family: Verdana;" lang="EN-US">intcolor: navy; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">。color: navy; font-family: Verdana;" lang="EN-US">
class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 10pt; mso-line-height-rule: exactly;">color: purple; font-family: Verdana;" lang="EN-US">cerun: yes;"> typedef char * char_ptr;
class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 10pt; mso-line-height-rule: exactly;">color: purple; font-family: Verdana;" lang="EN-US">cerun: yes;"> char_ptr bentley, rolls_royce;
color: navy; font-family: Verdana; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;" lang="EN-US">cerun: yes;"> bentleycolor: navy; font-family: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">和color: navy; font-family: Verdana; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;" lang="EN-US">rolls_roycecolor: navy; font-family: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">的类型是相同的c;都是指向color: navy; font-family: Verdana; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;" lang="EN-US">charcolor: navy; font-family: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">的指针