永发信息网

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

答案:3  悬赏:30  手机版
解决时间 2021-11-20 15:01
  • 提问者网友:寂寞梧桐
  • 2021-11-20 08:50
C++函数的参数为 void *类型表是什么意思??
最佳答案
  • 五星知识达人网友:由着我着迷
  • 2021-11-20 10:25
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");
  }
全部回答
  • 1楼网友:拜訪者
  • 2021-11-20 11:12
void指的是空类型,void*就是空指针,意思是函数的参数为空,可以省略不写。
  • 2楼网友:几近狂妄
  • 2021-11-20 10:53
void参数表示没有参数的意思,和()表示的意思是一样的
void * 表示有一个指针类型的参数,无论是什么类型的指针,只要是指针就可以追问谢谢明白了,
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯