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

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

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

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

海绵宝宝撒
浏览 1138回答 2
2回答

紫衣仙女

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");  }

天涯尽头无女友

void参数表示没有参数的意思,和()表示的意思是一样的void * 表示有一个指针类型的参数,无论是什么类型的指针,只要是指针就可以
打开App,查看更多内容
随时随地看视频慕课网APP