void指针

void指针的使用规则:

      1.void指针可以指向任意类型的数据,就是说可以用任意类型的指针对void指针对void指针赋值。例如:

      int *a;

      void *p;

      p=a;

      如果要将void指针p赋给其他类型的指针,则需要强制类型转换,就本例而言:a=(int *)p。

     2.在ANSI  C标准中,不允许对void指针进行一些算术运算如p++或p+=1等,因为既然void是无类型,那么每次算术运算我们就不知道该操作几个字节。而在GNU中则允许,因为在缺省情况下,GNU 认为void *和char *一样,既然是确定的,当然可以进行一些算术操作,在这里sizeof(*p)==sizeof(char)。

    注:void指针可以任意类型的数据,可以在程序中给我们带来一些好处,函数中形为指针类型时,我们可以将其定义为void指针,这样函数就可以接受任意类型的指针。如:

      函数原型:void *memcpy(void *dst,void const *src,size_t length);

      我们可以这样调用函数:char temp[SIZE],values[SIZE];memcpy (temp,values,SIZE),这里的temp和values并不需要进行强制类型转换,void指针可以接受任意类型的指针。

   PS:因为在C++中,函数参数为void的意思是这个函数不接受任何参数。



void *p = NULL;
int b = 3;
p=&b;
cout<<*(int*)p<<endl;//虽然void指针可以接受任意类型的指针,但是使用void指针时仍然需要强制类型转换。如果去掉(int*)在VS下会报错。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值