typedef

C语言支持一*种叫作typedef的机制,它允许你为各种数据类型定义新名字。typedef 声明的写法和普通的声明基本相同,
只是把typedef这个关键字出现在声明的前面。例如,下面这个声明:
char    *ptr_ to_ char;
变量ptr_ to_ char 声明为-一个指向字符的指针。但是,在你添加关键字typedef后,声明变为:
typedef       char        *ptr_ to_ char;
这个声明把标识符ptr_ to_ char作为指向字符的指针类型的新名字。你可以像使用任何预定义名字一样在下面的声明中使用这个新名字。

例如:ptr_ to_ char     a;
声明a是一个指向字符的指针。使用typedef声明类型可以减少使声明变得又臭又长的危险,尤其是那些复杂的声明'。而且,如果你以后觉得应该修改程序所使用的一些数据的类型时,修改-一个typedef声明比修改程序中与这种类型有关的所有变量(和函数)的所有声明要容易得多。

提示:
你应该使用typedef而不是#define来创建新的类型名,因为后者无法正确地处理指针类型。
例如:
#define d_ ptr_ to_ char
char    d_ ptr_ to_ char    a, b;
正确地声明了a,但是b却被声明为一个字符。在定义更为复杂的类型名字时,如函数指针或指向数组的指针,使用typedef 更为合适。

★用typedef定义类型的方法:

① 先按定义变量的方法写出定义体(如:int i)。

② 将变量名换成新类型名(例如:将i换成COUNT)。

③ 在最前面加typedef   (例如:typedef int COUNT)。

④ 然后可以用新类型名去定义变量。

goto

它的语法如下:
goto     语句标签;
要使用goto语句,你必须在你希望跳转的语句前面加上语句标签。语句标签就是标识符后面加个冒号。包含这些标签的goto语句可以出现在同一个函数中的任何位置。goto是一种危险的语句,因为在学习C的过程中,很容易形成对它的依赖。经验欠缺的程序员有时使用goto 语句来避免考虑程序的设计。这样写出来的程序较之细心编写的程序总是难以维护得多。

例如,这里有一一个程序, 它使用goto语句来执行数组元素的交换排序。

i=0:
outer_ next :
if(主>= NtUM ElEMENTS一1 )
goto outer_. end;
inner_ next :
if( j >= NUM_ ELEMENTS
qoto inner.. end;
if( value[i] <= value[j1 )
goto no_ ewap 1
temp
P =val
valueril
e[i];..
value{1] = value[j];
valuelj] = temp ;
no_ swap:
j+=1;
goto inner. next :
inner_ end:
+=1;
outer_ next ;
outer_ end:

这是-一个很小的程序,但你必须花相当长的时间来研究它,才可能稿清楚它的结构。下面是一个功能相同的程序,但它不使用goto语句。你很容易看清它的结构。

for( i= 0; i< NUM ELEMENTS- 1; i += 1 ){
for(j=i↓1;j< NUM_ELEMENTS; j += 1 ){
if( value[i] > value[j] ){
temp = value[i];
value[i] = value[j]:
value[j]一temp;}
}
quit;

但是,在一种情况下,即使是结构良好的程序,使用goto语句也可能非常合适一就 是跳出多层嵌套的循环。
由于break语句只影响包围它的最内层循环,要想立即从深层嵌套的循环中退出只有使用一一个办法,就是使用goto语句。如下例所示:

while( conditionl ) {
while( condition2 ) {
while ( condition3 ){
if( some disaster )
goto quit:
quit: ;

要想在这种情况下避免使用goto语句有两种方案。第一个方案是当你希望退出所有循环时设置一个状态标志 ,但这个标志在每个循环中都必须进行测试:

enum
EXIT,OK } status;
status = OK;
while( status == OK && conditionl ) {
while( status == OK && condition2 ) {
while ( condition3
if( some disaster ) {
status=EXIT;
break;

typedef 的使用方法详解、goto语句的使用方法。相关推荐

  1. python中new方法详解及_Python中new方法的详解

    new_ 方法是什么? __new__方法其实就是创建对象的方法 new()方法是在类准备将自身实例化时调用. 一个类可以有多个位置参数和多个命名参数,而在实例化开始之后,在调用 init()方法之前 ...

  2. java script eval_「eval」js中的eval方法详解(一)–eval方法的初级应用 - seo实验室...

    eval 在我看来,js中的eval()方法就是一个js语言的执行器,它能把其中的参数按照javaScript语法进行解析并执行. 语法: eval(s); eval()方法中的参数s有多种情况.参数 ...

  3. 电脑连接电视方法详解_笔记本连接电视方法有哪些?分享两种笔记本连接电视方法...

    在如今这个快节奏的时代中,大多数年轻人的手中都会有个笔记本电脑,并且将笔记本电脑作为休闲娱乐或办公的一种设备.相比于电视屏幕尺寸,笔记本电脑的屏幕还真是小了很多.为了提高视觉上的体验,很多小伙伴会选择 ...

  4. shell命令执行完的退出状态详解+if语句的定义方法

    文章目录 退出状态的原理 $?的作用 退出状态的原理 $?的作用 1.先执行一条命令,再去echo $?查看数字 2.一般情况下0表示上一条命令执行正确,非0表示错误(错误原因可以查$?的值) 1.2 ...

  5. python stringstrip方法详解_Python 的技巧和方法你了解多少?

    学了这些你的python代码将会改善,你的技巧将会提高. 进群:943752371可以获取各类Python学习资料+视频资料+各类安装教程 路径操作 比起os模块的path方法,python3标准库的 ...

  6. python中index方法详解_Python中的index()方法使用教程

    index()方法确定字符串str,如果起始索引beg和结束索引end在末尾给出了找到字符串或字符串的一个子串.这个方法与find()方法一样,只是如果没有找到子符趾会抛出一个异常. 语法 以下是in ...

  7. PHP连接redis并执行redis相关命令的方法详解

    PHP连接redis并执行redis相关命令的方法详解 连接redis库的方法 共性的运算归类 redis服务类函数 set 操作增删改查 List栈的结构,注意表头表尾,创建更新分开操作 Set,没 ...

  8. php7的安装方法,php7 iis安装方法详解(图文)

    php7 iis安装方法详解(图文) php7 iis安装方法:首先在官网下载PHP7:然后将其解压到合适的位置:接着找到"php.ini-development"文件,并将其后缀 ...

  9. Java Thread的interrupt方法详解

    Java Thread的interrupt方法详解 一.概述 interrupt方法的目的是给线程发出中断信号,但是不保证线程真的会中断 中断一个线程只是为了引起该线程的注意,被中断线程可以决定如何应 ...

  10. mysql order by 语句_Mysql优化order by语句的方法详解

    本篇文章我们将了解ORDER BY语句的优化,在此之前,你需要对索引有基本的了解,不了解的老少爷们可以先看一下我之前写过的索引相关文章.现在让我们开始吧. MySQL中的两种排序方式 1.通过有序索引 ...

最新文章

  1. 有关Android的调试时候常用到的一些技巧
  2. Linux网络编程之select
  3. GNU C 、ANSI C、标准C、标准c++区别和联系
  4. 实现用户注册功能---文件保存信息,如果用户名存在就死循环继续
  5. html弹幕效果加入视频,JS实现的视频弹幕效果示例
  6. Jaspersoft 与springboot结合生成一维码,二维码
  7. 广州大彩串口屏与STM32F407通讯
  8. Aptos 深度解读:机遇、挑战与风险
  9. 蓝牙耳机买什么好?2021值得入手的蓝牙耳机推荐
  10. deepfacelab安卓版_deepfacelab
  11. 【第三十一期】360后台开发实习面经 - 两轮技术面
  12. word 2007中在页眉中插入或这删除下划线
  13. 关于nohup,sh,命令执行xxx.sh脚本的区别
  14. 维基链WICC | 项目进展周报第57期(1.6~1.12)
  15. MySQL春节收支表怎么建立_怎样建立收支账目表
  16. 引起C运行时错误R6034的原因和解决方法
  17. Web框架Django使用概览
  18. JAVA SE知识整合(暂时完结 五万七字)后续分点详解
  19. java实现第五届蓝桥杯幂一矩阵
  20. [主板] 如何通过BIOS设置自动开机

热门文章

  1. 【分享一个好看的Android item布局 使用于ListView,RecyleView JAVA版本(二)】
  2. C# dotnet 使用 OpenXml 解析 PPT 元素的坐标和宽度高度
  3. C语言递归实现四色定理,实现四色定理的C++程序
  4. python学后总结_学员 | 斥巨资学完数据分析后,给大家总结了7个小建议
  5. 【微服务】166:导入数据到索引库
  6. 【Cplex】IBM ILOG Concert: Impossible to create an instance of Excel.
  7. python机器人编程——四轴UARM机械臂的运动控制(逆解)原理及python实现(下)
  8. 当面试官问你“我为什么要聘用你”
  9. UI设计中标签设计总结
  10. 数值分析实验 实验3-1 牛顿下山法 python3实现