Typedef相关概念

news/2024/5/19 2:16:04 标签: signal, 扩展, 语言, c
cle class="baidu_pl">
cle_content" class="article_content clearfix">
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;">的指针

cle>

http://www.niftyadmin.cn/n/873653.html

相关文章

= 不同于 ==

来自:c缺陷与陷阱1.1节 当形如e1 e2这样的表达式出现在语句的条件判断部分时,有些编译器会给出警告消息。当确实需要对变量进行赋值并检查该变量是否为0时,为了避免来自编译器的警告,我们不应该简单的关闭警告选项,而…

python ip代理池维护_python爬虫011-IP代理池的维护-(2)获取模块-代理66、快代理、旗云代理...

最近突然有所松懈,突然间变得好累。早上起不来,上午没精神,下午没体力,晚上没效率。学习的动力似乎突然消失。我怎么了?似乎是休息方面除了问题,持续一个多月的学习,没有运动过,更别…

整数溢出

来自:C缺陷与陷阱3.9节 c语言中存在两类整数算术运算,有符号运算与无符号运算。在无符号算术运算中,没有所谓的“溢出”一说:所有的无符号运算都是以2的n次方为模,这里的n是结果中的位数。如果算术运算符的一个操作数为…

不是方阵有逆矩阵吗_人工智能数学基础----矩阵

人工智能数学基础----矩阵人工智能数学基础系列文章1. 人工智能数学基础----导数2. 人工智能数学基础----矩阵3. 人工智能数学基础----线性二阶近似 今天复习矩阵,作为程序员,矩阵在程序中的应用想必或多或少都接触过,特别是在图像变化算法上…

返回整数的getchar函数

来自&#xff1a;C缺陷与陷阱5.1节我们首先看下面的这个例子&#xff1a; #include <stdio.h> int main() { char c; /* 改成&#xff1a;int c 就正确了 */ while( ( c getchar() ) ! EOF ) { putchar( c ); } return 0; } getchar函…

软件项目管理实践之日计划

软件项目管理实践之日计划 袁光东 原创如何提高项目的生产率&#xff0c;保证项目按期交付是每个软件开发项目经理都需要面对的难题。关于这方面的研究&#xff0c;在《人月神话》、《人件》等书籍都有很详细的论述。研究表明&#xff0c;不同程序员之间的生产率最高差别在40倍…

随机数的相关概念

来自&#xff1a;c和指针.P328 有些程序每次执行时不应该产生相同的结果&#xff0c;如游戏和模拟&#xff0c;此时随机数就非常有用。下面两个函数合在一起使用能够产生伪随机数。之所以如此称呼是因为它们通过计算产生随机数&#xff0c;因此有可能重复出现&#xff0c;所以并…

postfix邮件服务器搭建_邮件服务器如何搭建?企业自己搭建邮件服务器的方法...

随着企业信息化进程的加快&#xff0c;企业邮件的使用也越来越多&#xff0c;不管是外网还是在企业内部网络&#xff0c;员工都经常使用企业邮件来处理日常的工作。而越来越多的企业和单位&#xff0c;也开始考虑自己搭建邮件服务器&#xff0c;以加强员工间的信息交流&#xf…