C语言和C++语言中的泛型指针
首次,在说泛型指针之前,先说说特定指针,特定指针,顾名思义,就是有明确的类型的指针,如:int * ,char * ,float * ,short* ,student* 等等。
那泛型指针,则为没有数据类型的地址,即 void *。许多库函数中也有此类型的泛型指针,如:malloc( ),memset( )等等。
那么,NULL在C和C++语言中,分别指的是什么呢?
#define NULL ((void *)0) //C
#define NULL NULL 0 //C++
在C语言和C++语言中,特定指针和泛型指针是否能相互转换呢?
特定指针转泛型指针 泛型指针转特定指针
C 合法 合法
C++ 合法 不合法
那么C语言为什么泛型指针转换成特定指针合法,而C++却不允许呢?
是因为在C语言中,通用指针可以将两个不同类型的指针进行间接的转换;
而在C++中,只见将路封死,不允许泛型指针转换成通用指针。
本文探讨了C语言和C++语言中的泛型指针(void*)概念及其使用方式,对比了特定指针与泛型指针之间的转换规则,并解释了NULL在两种语言中的定义差异。
750

被折叠的 条评论
为什么被折叠?



