世间真正温煦的春色,都熨帖者大地,潜伏在深谷。

一.简介

  goto与void是两个不常用的关键字,C语言中的Goto关键字传承字汇编语言,使用方法也与汇编语言相同。void是类型关键字,可修饰函数和变量。

二.关键词详解

  2.1 goto

    2.1.1 使用方法  

 #include <stdio.h>

 void main(void){
goto C;  //可直接跳转到标识的位置,忽略中间的程序。
printf("%d\n",sizeof(void)); C:
printf("this is goto!\n"); }

    2.1.2 疑点

     C程序,无论多么复杂,总是由顺序结构、选择结构和循环结构组成,而使用goto语句会破坏C程序的结构性,因此现代企业开发的C程序都默认不适用goto语句。

  2.2 void

    2.2.1 使用方法

      void与int 、char等基本类型不同,它是抽象的类型,不映射具体的内存空间。在标准的ANSCI规范中的void类型映射的内存大小为0字节,使用sizeof(void)返回的数值是0。很多现代企业类如GUN觉得标准的C语言规范太简单,不使用,于是在ANSCI规范的基础上做了修改。比如GUN标准就是从ANSCI上修改而来的,使用GUN标准的编译器中GCC中void类型表示的内存大小是一个字节,即Sizeof(void)=1。

      >作为参数,表示函数不需要传入实参。

      >修饰函数,表示函数可以不返回数值。

 #include <stdio.h>

 f1(){

 }

 void f2(void){

 }
int main(void){ char i=f1(,,,);  //为设置参数类型和返回类型的函数,可以传入任意类型和数量的参数,默认返回值为1; f2();  //void类型的参数表示不接受任何类型参数传入。   printf("count of i:%d\n",i); return ;
}

    2.2.2 疑点

    >void不可以修饰变量,因为是抽象的类型,不映射具体的内存大小。

    >C语言是开放的语言,不写参数和返回类型的函数,默认可以传入任意类型和数量的参数,而非不写参数类型就不能传入参数,这里可以看出void类型的作用。

    >void*作为左值,可以接收任意类型的指针。作为右值,需要进行强制类型转换。

 int main(void){

     char num=;

     char* c=&num;

     char* i;

     void* v;

     v=c;    //void* 作为左值

     i=(char*)v;    //voi* 作为右值

     printf("%d\n",*i);

     return ;
}

C语言进阶_goto与void解析的更多相关文章

  1. C语言进阶——goto 和 void 的分析08

    遭人遗弃的goto: 高手潜规则:禁止使用goto 项目经验:程序质量与goto的出现次数成反比 最后的判决:将goto打入冷宫 程序示例1:(goto副作用分析) #include <stdi ...

  2. 《C语言进阶剖析》课程目录

    <C语言进阶剖析>学习笔记                                                         本文总结自狄泰软件学院唐佐林老师的<C语言 ...

  3. C# 语言的两个html解析器

    基于C# 语言的两个html解析器   基于C# 语言的两个html解析器 1)Html Agility Pack http://nsoup.codeplex.com/ 代码段示例: HtmlDocu ...

  4. 基于C# 语言的两个html解析器

    基于C# 语言的两个html解析器 1)Html Agility Pack http://nsoup.codeplex.com/ 代码段示例: HtmlDocument doc = new HtmlD ...

  5. 【R笔记】R语言进阶之4:数据整形(reshape)

    R语言进阶之4:数据整形(reshape) 2013-05-31 10:15 xxx 网易博客 字号:T | T 从不同途径得到的数据的组织方式是多种多样的,很多数据都要经过整理才能进行有效的分析,数 ...

  6. Xamarin XAML语言教程XAML文件结构与解析XAML

    Xamarin XAML语言教程XAML文件结构与解析XAML XAML文件结构 在上文中,我们创建XAML文件后,会看到类似图1.16所示的结构 图1.16  结构 其中,.xaml文件和.xaml ...

  7. 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-项目入口与路由EP01

    书接上回,我们已经安装好Iris框架,并且构建好了Iris项目,同时配置了fresh自动监控项目的实时编译,万事俱备,只欠东风,彩虹女神蓄势待发.现在我们来看看Iris的基础功能,如何编写项目入口文件 ...

  8. Android的init过程(二):初始化语言(init.rc)解析

    Android的init过程(一) 本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10 在上一篇文章中介绍了init的初始化第一阶段,也就是处理各种属性.在本文将会详细分析i ...

  9. Android的init过程(二):初始化语言(init.rc)解析【转】

    转自:http://www.cnblogs.com/nokiaguy/p/3164799.html Android的init过程(一) 本文使用的软件版本 Android:4.2.2 Linux内核: ...

随机推荐

  1. N - Aroma's Search CodeForces - 1293D math+greedy

    作为DIV2的D题来讲,这个题目不算难. 题目大意:再规定的时间内寻找宝藏,第i个宝藏的位置为a*x(i-1)+b,a*y(i-1)+b.然后给出初始位置xs,ys和时间t让求再时间t内能够寻找到多少 ...

  2. C - Sweets Eating

    规律题 前缀和+规律 先求前缀和...答案为c[i]=arr[i]+c[i-m]//i>m时. #include<bits/stdc++.h> using namespace std ...

  3. Co-prime 杭电4135

    Given a number N, you are asked to count the number of integers between A and B inclusive which are ...

  4. BUUOJ [CISCN2019 华北赛区 Day2 Web1]Hack World

    补一下这道题,顺便发篇博客 不知道今年国赛是什么时候,菜鸡还是来刷刷题好了 0X01 考点 SQL注入.盲注.数字型 0X02自己尝试 尝试输入1 赵师傅需要女朋友吗???随便都能有好吧 输入2 ?? ...

  5. 理解java容器底层原理--手动实现LinkedList

    Node java 中的 LIinkedList 的数据结构是链表,而链表中每一个元素是节点. 我们先定义一下节点: package com.xzlf.collection; public class ...

  6. ES6新增的 Set 和 WeakSet 是什么玩意?在此揭晓

    现在的章节内容会更加的紧密,如果大家看不懂可以先去看以前的文章,当然看了的忘了,也可以去看一下,这样学习后面的内容才会更加容易. 什么是Set结构 Set是ES6给开发者带来的一种新的数据结构,你可以 ...

  7. ApiPost的预执行脚本和后执行脚本

    ApiPost的预执行脚本和后执行脚本主要是用来定义变量.但是它们有什么区别呢? 预执行脚本 在当前接口发送请求前执行的脚本,可以理解为beforeSend的时候执行. 一般在这里,我们可以设置一些前 ...

  8. 2019-2020-1 20199325《Linux内核原理与分析》第九周作业

    第九周作业要求: 理解Linux系统中进程调度的时机,可以在内核代码中搜索schedule()函数,看都是哪里调用了schedule(),判断我们课程内容中的总结是否准确: 使用gdb跟踪分析一个sc ...

  9. jstat命令查看JVM 的GC状态

    转载于   https://www.cnblogs.com/alter888/p/10407952.html jstat命令可以查看堆内存各部分的使用量,以及加载类的数量.命令的格式如下: jstat ...

  10. JDK 15 JAVA 15的新特性展望

    目录 JEP 371: Hidden Classes JEP 372: 删除 Nashorn JavaScript Engine JEP 377: 新的垃圾回收器ZGC正式上线了 JEP 378: T ...