null指针与void指针的区别
时间: 2024-04-28 16:26:48 浏览: 130
NULL指针是指向地址0的指针,通常用于表示指针不指向任何有效的内存地址,而void指针是一种特殊的指针类型,可以指向任何类型的数据。NULL指针是一种特殊的指针值,而void指针是一种指针类型。在C语言中,NULL通常被定义为宏,其值为0或者((void *)0)。在C++中,NULL通常被定义为0,而nullptr是一个指向空指针的常量表达式。
相关问题
函数指针 void形参
回答: 通过引用可以知道,void指针可以指向任意类型的数据,并且任何类型的指针都可以直接赋值给void指针。因此,函数的形参可以使用void指针,以接受任意类型的指针作为参数。当函数的形参使用void指针时,可以在函数内部将void指针转换为具体的指针类型,并进行相应的操作。例如,引用中的例子展示了一个使用void指针作为函数形参的示例,其中通过将void指针转换为char指针,实现了对不同类型数据的拷贝操作。<em>1</em><em>2</em>
#### 引用[.reference_title]
- *1* *2* [void指针作为函数形参的用法](https://blog.csdn.net/weixin_44713496/article/details/123769572)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item]
[ .reference_list ]
指针数组里面放函数地址,当地址为NULL时应该写(void*)NULL吗
不一定需要写成`(void*)NULL`,因为C语言中NULL通常被定义为0或者((void*)0),所以直接写NULL即可。但是为了代码的可读性,可以在需要强制转换的地方显示地将NULL转换为(void*)类型。例如:
```
void (*func_ptr[10])(int); // 定义一个指针数组,存放函数指针
func_ptr[0] = (void (*)(int))NULL; // 将第一个元素置为空指针
```
注意,这里的强制转换是必要的,因为在C语言中,NULL的类型是(void*),而函数指针的类型是void (*)(int),二者类型不同,需要进行强制转换才能相容。
阅读全文