void以及void指针的深入详解

void含义

void即“无类型”,void*为无类型指针,可以指向任何数据类型。可以将其理解为万能指针。

void限定作用

void几乎只有限制程序的作用。其限定作用体现在:

  1. 对函数返回的限定
  2. 对函数参数的限定

注意:在C语言中,如果函数不加返回值限定符,则默认为int类型而不是void类型:

add(inta,intb)
{
	return a+b;
}

void作为函数参数表示这个函数不接受任何参数

int function(void)
{
	return1;
}

可以看出void不能代表一个真实的变量。可以理解为是一种泛型的符号,但是却没有泛型的数据。

void*修饰作用

如果函数的参数可以是任意类型的指针,可以将其声明为void*。
如内存操作函数:

void * memcpy(void*dest,constvoid*src,size_tlen);
void * memset(void*buffer,intc,size_tnum);

这里可以理解为万能指针,可以接受任何类型的参数。
也体现了内存操作函数的意义。因为你其操作的对象仅仅是一片内存,而不论这片内存是什么类型。

NULL指针与Void*指针

再次注意:void只具有泛型作用。void* 指针只是说明可以接受任何类型的参数,在使用时赋值。
而NULL可以理解为一个常量,其值为0。
编译以下代码:

#include <iostream>
using namespace std;

int main(void)
{
	int *pNull = NULL;
	void *pvoid;
	cout << pNull << endl;
	cout << pvoid << endl;
	system("pause");
	return 0;
}

编译结果为:

使用了未初始化的局部变量“pvoid”

注释后运行

#include <iostream>
using namespace std;

int main(void)
{
	int *pNull = NULL;
	//void *pvoid;
	cout << pNull << endl;
	//cout << pvoid << endl;
	system("pause");
	return 0;
}

结果为:

00000000

参考资料

void及void指针含义的深刻解析

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值