• 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 }
  • 相关阅读:
    history对象
    排序算法总结
    Boltzmann机
    Sort Colors
    First Missing Positive
    Sort List
    Insertion Sort List
    Merge Two Sorted Lists
    Merge Sorted Array
    Sum Root to Leaf Numbers
  • 原文地址:https://www.cnblogs.com/geekj/p/12432982.html
Copyright © 2020-2023  润新知