C++函数的参数为 void *类型表是什么意思??

比如:
a(){cout<<"book";}

a(void){cout<<"book";}

a(void *){......}
这三个函数有什么区别,不要长篇大论,但要讲清楚

void参数表示没有参数的意思,和()表示的意思是一样的
void * 表示有一个指针类型的参数,无论是什么类型的指针,只要是指针就可以追问

谢谢明白了,

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-13
void指的是空类型,void*就是空指针,意思是函数的参数为空,可以省略不写。
第2个回答  2015-09-27
void类型:
  void类型其实是一种用于语法性的类型,而不是数据类型,主要用于作为函数的参数或返回值,或者定义void指针,表示一种未知类型。
作为函数参数与返回值:
  void func( void );
  void func( );
  例如上面两例,其实两种声明方式是等效的,在C++中如果参数列表为空,默认的参数类型即为void,但建议没有参数时使用void以提高程序的可读性。
  因为C++在定义函数时不允许返回值类型为空,在C++98之前,是允许定义函数时不定义返回值的,默认的返回值是int类型。其实默认int类型并不是好事,如果函数有返回值在函数返回时是需要消耗CPU传递返回值的,也或许也是C++98标准将默认返回值类型改为void的原因。
  因为C++不允许默认返回值,所以当函数不需要返回值是,需要将返回值类型声明为int类型。当调用返回值类型为void类型的函数时,在工程上有很多实际代码在前面加上(void)类型转换,以提高代码的可读性。如调用上面定义的
  func函数。
  (void)func( );
  从另一个角度讲,这样严谨的方式是可以提高软件的健壮性的,调用函数时可以明确地看出是没有返回值的,如果调用一个返回值不是int类型的函数时最好判断其返回值,以检查函数调用是否成功,如:
  #include
  char buff[5];
  func( );
  snprintf(buff, sizeof(buff), “%d”, “10240”);
  显然这段代码是有问题的,当然func没有返回值,这样调用是没有问题,但snprintf的调用会有问题因为缓冲区有可能太小而不能容纳结果字符串,上面的代码就有这个问题。假设我们不知道snprintf有没有返回值,可能这个BUG我们不会发现,直到有一天出现了我们不期望的结果。如果我们严格要求调用每个函数时必须判断函数的返回值,按照以下面的代码编码,就不会出给我们的程序造成隐患。
  #include
  #include
  char buff[5];
  (void)func( );
  if( sizeof(buff) <= snprintf(buff, sizeof(buff), "%d", 10240) ){
  buff[sizeof(buff) - 1] = '/0';
  throw std::overflow_error("buff overflow");
  }

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网