void 和void*的详解

void和void*的详解:

void指该数据无类型,void*指该指针无类型,可以指向任意类型

 1. 如果函数没有返回值,那么应声明为void类型;
 2. 如果函数无参数,那么应声明其参数为void;
 3. 如果函数的参数可以是任意类型指针,那么应声明其参数为void * ;
  4. void不能代表一个真实的变量;                                                                                                                                                                                 5.void 的主要作用是对函数的参数和返回的限定;

例:     float *p1;                                                                                                                                                                                                       int *p2;                                                                                                                                                                                                                       p1=p2;    //此处将会报错,需要用强制类型转换。                                                                                                                                                         换为void 就可以直接进行转换了。                            void *p1;                                                     int *p2;                                                                                                                                                                                                                       p1=p2;

              但是把 p1给p2就会出错了;                             void *p1;                                                                                                    int *p2;                                                                    p2=p1;  //可以这样理解,所有的男人和女人都是人,但是你可以说所有的人都是男人吗?

下面给出void关键字的使用规则:
  规则一 如果函数没有返回值,那么应声明为void类型

  在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。但是许多程序员却误以为其为void类型 。例如:
add ( int a, int b )
{
return a + b;
}
 
int main(int argc, char* argv[])
{
printf ( "2 + 3 = %d", add ( 2, 3) );
}

  程序运行的结果为输出:
  2 + 3 = 5
  这说明不加返回值说明的函数的确为int函数
 。

规则四如果函数的参数可以是任意类型指针,那么应声明其参数为void *

  典型的如内存操作函数memcpy和memset的函数原型分别为:
void * memcpy(void *dest, const void *src, size_t len);
void * memset ( void * buffer, int c, size_t num );

  这样,任何类型的指针都可以传入memcpy和memset中,这也真实地体现了内存操作函数的意义,因为它操作的对象仅仅是一片内存,而不


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值