typedef 的使用方法详解、goto语句的使用方法。
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语句的使用方法。相关推荐
- python中new方法详解及_Python中new方法的详解
new_ 方法是什么? __new__方法其实就是创建对象的方法 new()方法是在类准备将自身实例化时调用. 一个类可以有多个位置参数和多个命名参数,而在实例化开始之后,在调用 init()方法之前 ...
- java script eval_「eval」js中的eval方法详解(一)–eval方法的初级应用 - seo实验室...
eval 在我看来,js中的eval()方法就是一个js语言的执行器,它能把其中的参数按照javaScript语法进行解析并执行. 语法: eval(s); eval()方法中的参数s有多种情况.参数 ...
- 电脑连接电视方法详解_笔记本连接电视方法有哪些?分享两种笔记本连接电视方法...
在如今这个快节奏的时代中,大多数年轻人的手中都会有个笔记本电脑,并且将笔记本电脑作为休闲娱乐或办公的一种设备.相比于电视屏幕尺寸,笔记本电脑的屏幕还真是小了很多.为了提高视觉上的体验,很多小伙伴会选择 ...
- shell命令执行完的退出状态详解+if语句的定义方法
文章目录 退出状态的原理 $?的作用 退出状态的原理 $?的作用 1.先执行一条命令,再去echo $?查看数字 2.一般情况下0表示上一条命令执行正确,非0表示错误(错误原因可以查$?的值) 1.2 ...
- python stringstrip方法详解_Python 的技巧和方法你了解多少?
学了这些你的python代码将会改善,你的技巧将会提高. 进群:943752371可以获取各类Python学习资料+视频资料+各类安装教程 路径操作 比起os模块的path方法,python3标准库的 ...
- python中index方法详解_Python中的index()方法使用教程
index()方法确定字符串str,如果起始索引beg和结束索引end在末尾给出了找到字符串或字符串的一个子串.这个方法与find()方法一样,只是如果没有找到子符趾会抛出一个异常. 语法 以下是in ...
- PHP连接redis并执行redis相关命令的方法详解
PHP连接redis并执行redis相关命令的方法详解 连接redis库的方法 共性的运算归类 redis服务类函数 set 操作增删改查 List栈的结构,注意表头表尾,创建更新分开操作 Set,没 ...
- php7的安装方法,php7 iis安装方法详解(图文)
php7 iis安装方法详解(图文) php7 iis安装方法:首先在官网下载PHP7:然后将其解压到合适的位置:接着找到"php.ini-development"文件,并将其后缀 ...
- Java Thread的interrupt方法详解
Java Thread的interrupt方法详解 一.概述 interrupt方法的目的是给线程发出中断信号,但是不保证线程真的会中断 中断一个线程只是为了引起该线程的注意,被中断线程可以决定如何应 ...
- mysql order by 语句_Mysql优化order by语句的方法详解
本篇文章我们将了解ORDER BY语句的优化,在此之前,你需要对索引有基本的了解,不了解的老少爷们可以先看一下我之前写过的索引相关文章.现在让我们开始吧. MySQL中的两种排序方式 1.通过有序索引 ...
最新文章
- 有关Android的调试时候常用到的一些技巧
- Linux网络编程之select
- GNU C 、ANSI C、标准C、标准c++区别和联系
- 实现用户注册功能---文件保存信息,如果用户名存在就死循环继续
- html弹幕效果加入视频,JS实现的视频弹幕效果示例
- Jaspersoft 与springboot结合生成一维码,二维码
- 广州大彩串口屏与STM32F407通讯
- Aptos 深度解读:机遇、挑战与风险
- 蓝牙耳机买什么好?2021值得入手的蓝牙耳机推荐
- deepfacelab安卓版_deepfacelab
- 【第三十一期】360后台开发实习面经 - 两轮技术面
- word 2007中在页眉中插入或这删除下划线
- 关于nohup,sh,命令执行xxx.sh脚本的区别
- 维基链WICC | 项目进展周报第57期(1.6~1.12)
- MySQL春节收支表怎么建立_怎样建立收支账目表
- 引起C运行时错误R6034的原因和解决方法
- Web框架Django使用概览
- JAVA SE知识整合(暂时完结 五万七字)后续分点详解
- java实现第五届蓝桥杯幂一矩阵
- [主板] 如何通过BIOS设置自动开机
热门文章
- 【分享一个好看的Android item布局 使用于ListView,RecyleView JAVA版本(二)】
- C# dotnet 使用 OpenXml 解析 PPT 元素的坐标和宽度高度
- C语言递归实现四色定理,实现四色定理的C++程序
- python学后总结_学员 | 斥巨资学完数据分析后,给大家总结了7个小建议
- 【微服务】166:导入数据到索引库
- 【Cplex】IBM ILOG Concert: Impossible to create an instance of Excel.
- python机器人编程——四轴UARM机械臂的运动控制(逆解)原理及python实现(下)
- 当面试官问你“我为什么要聘用你”
- UI设计中标签设计总结
- 数值分析实验 实验3-1 牛顿下山法 python3实现