世间真正温煦的春色,都熨帖者大地,潜伏在深谷。
一.简介
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\n",sizeof(void)); 6 7 C: 8 printf("this is goto!\n"); 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\n",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=# 6 7 char* i; 8 9 void* v; 10 11 v=c; //void* 作为左值 12 13 i=(char*)v; //voi* 作为右值 14 15 printf("%d\n",*i); 16 17 return 0; 18 }
原文:https://www.cnblogs.com/geekj/p/12432982.html