C语言进阶_goto与void解析

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

一.简介

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

二.关键词详解

  2.1 goto

    2.1.1 使用方法  

 1 #include <stdio.h>
 2 
 3 void main(void){
 4     goto C;  //可直接跳转到标识的位置,忽略中间的程序。
 5     printf("%d
",sizeof(void));
 6     
 7     C:    
 8         printf("this is goto!
");
 9     
10 }

    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。

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

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

 1 #include <stdio.h>
 2 
 3 f1(){
 4     
 5 }
 6 
 7 void f2(void){
 8     
 9 }
10 int main(void){
11     
12     char i=f1(1,2,3,4);  //为设置参数类型和返回类型的函数,可以传入任意类型和数量的参数,默认返回值为1;
13     
14     f2();  //void类型的参数表示不接受任何类型参数传入。  
15     
16     printf("count of i:%d
",i);
17     
18     return 0;
19 }

    2.2.2 疑点

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

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

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

 1 int main(void){
 2     
 3     char num=1;
 4     
 5     char* c=&num;
 6     
 7     char* i;
 8     
 9     void* v;
10     
11     v=c;    //void* 作为左值
12     
13     i=(char*)v;    //voi* 作为右值
14     
15     printf("%d
",*i);
16             
17     return 0;
18 }
原文地址:https://www.cnblogs.com/geekj/p/12432982.html