码迷,mamicode.com
首页 > 其他好文 > 详细

goto,void,extern,sizeof分析

时间:2015-09-19 00:42:34      阅读:500      评论:0      收藏:0      [点我收藏+]

标签:

goto:

程序的质量与goto出现的次数成反比,禁用

goto的副作用:破环了程序的结构化的顺序执行的过程,它有可能会跳过程序的应该执行的一些步骤。

void:

修饰函数返回值和参数

c语言中没有定义void的内存空间的大小,无法在内存中裁剪出void对应的变量,但是不同的编译器,可能为该数据类型定义了内存空间大小,并且标准还不一致。

printf("%d\n",sizeof(void));执行的结果在不同的编译器中,结果可能不同。

void*:

作为左值,用于接收任意类型的指针

作为右值,赋值给其他类型的指针时,需要强制类型转换

int* pi=(int*)malloc(sizeof(int));

void* pc1=pc2=NULL;

pc1=pi;

pi=(int*)pc1; //正确写法

pi=pc2; //可能一些编译器也能通过,但是就语法结构而言,说明该编译器不够规范。

 1 //*******test4.c********
 2 void* my_memset(void* p,char v,int size) 
 3 {
 4   void* ret=p;
 5   int i=0;
 6   char* dest=(char*)p;
 7   for(i=0;i<size;i++)
 8   {
 9     dest[i]=v;
10   }
11   return ret;
12 }
13 
14 int main()
15 {
16   int abc[5]={1,2,3,4,5};
17   my_memset(abc,0,sizeof(abc));
18   for(int i=0;i<5;i++)
19   printf("%d\n",abc[i]);
20   return 0;
21 }

函数中参数void* p 表示可以接受所有类型变量的指针,这就是void*的好处。

extern用来声明外部定义的变量或函数,外部体现在另一个文件中定义,在文件中声明之后,就可以调用这个函数或是使用这个变量:

extern int abc;

extern int func(int a,int b);

第二个作用:用来告诉c编译器用C方式编译。

extern "c"

{

    int add(int a,int b)

     {

             return a+b;

      }

}

 

sizeof是编译器的内置指示符,不是函数;用于“计算”相应的实体所占用的内存大小;sizeof的值在编译期就已经确定:

int  abc;

sizeof(a),sizeof(int)

printf("%d\n",sizeof(a)); //4

printf("%d\n",sizeof a); //4

printf("%d\n",sizeof(int)); //4

 

goto,void,extern,sizeof分析

标签:

原文地址:http://www.cnblogs.com/data1213/p/4819968.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!