哪位高手帮小弟我澄清 空指针 和 void* 的区别?
谁帮我澄清 空指针 和 void* 的区别??
谁帮我澄清 空指针 和 void* 的区别??
看了很多中文翻译的书籍,好像没有给void*一个正确的翻译,有的时候也翻译成了空指针
什么空指针空值指针
好乱
void*一般怎么用一个专业术语称呼??
------解决方案--------------------
这只是叫法问题,不值得深究
一般空指针指的是 0 值的指针
void * 好像并没有特别的称呼
------解决方案--------------------
根据“飞雪”,tadom等大牛讲得都说void*就是空指针;
本人也曾经错误认识;
------解决方案--------------------
我一般直接用void指针NULL指针,代码层面的描述还是用代码语言……
专有名词不翻译应该成为一个规则……大家应该有所感觉,中文书里那些狗屎翻译大多集中在专有名词的乱翻译上,而对于我们这些专业人员来说,专有名词全英文不成问题的,都认识,倒是那种承接性的、描述性的(公共英语部分)是绝大部分中国人的短板
------解决方案--------------------
这种词就不应该翻译,
smalltalk翻译成 小谈话?
void *翻译成 空指针,
值为0的翻译成 0指针,
更加贴切。
ps: C++里用0,不用NULL,NULL是古老的做法,也是C++之父和primer作者不推荐的做法。
------解决方案--------------------
没见过英文原文,自己的理解是:无类型指针(有生于无,所以是一切指针的本源)
------解决方案--------------------
也是C++之父和primer作者不推荐的做法。
这俩人就是护犊子,曾经看c++Primer的时候感觉他们很对,现在感觉纯粹扯淡……NULL和0来区分指针和证书有什么不妥的地方?C++里用内置类型有什么不妥的?还什么“现代化的C++程序不应该出现指针!”C++Primer原话……真要是这样你干脆像C#那样给指针一个unsafe开关,平时禁止使用得了!
------解决方案--------------------
还是那句话,他们想另起炉灶,与C语言完全撇开关系……
------解决方案--------------------
你现在这个认识还是错的,void*不是空指针,只是指向空对象的指针。
还有空指针与空指针常量之分,C中的空指针常量指值为0、0L的整数常量表达式或( void* )0,C++则去掉了( void* )0。而空指针指的是具有一般对象类型的值为NULL的指针。
------解决方案--------------------
你就当世界上不存在空指针这种东西
void *可以称为万能指针,他可以指向任意类型的数据
因为无论是什么类型的指针,他所占的空间一定等于机器的字长,所以就诞生了void *的指针,void *指针主要是传参的时候很有用处
你使用的时候必须转换回来
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
在c语言里void*可以和任意指针互相的隐式转换,比如
int i = 0;
void*p = &i;
int *pi = p;
但是在c++里出于类型的安全,void*指针不能自由地隐式转换到其他类型指针,除了使用强制转换。
NULL在c里面是有的用于表示空(null)指针(void*)0。但是在c++里是用0表示的。c++标准规定NULL宏是一个由实现定义的c++空指针常量。之所以用0,也是出于上述原因void*不能任意隐式转换,但是数字0是可以的。
但是0的使用可能会在代码中带来一些更多的隐患。
在stddef.h里有定义:
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
------解决方案--------------------
------解决方案--------------------
C++Primer已经快成STL手册了,一般我用STL和模板问题的时候去查的比较多……
那俩作者确实很护犊子,没学过C的人去看C++ Primer基本上除了STL其他都不会用,写出来代码也和java、C#似的,不清楚这是不是作者的本意……我猜是的,我以前发过一个口水贴,质疑部分C++的用户“自称”不会C,这部分用户可能就是没学过C,直接用C++Primer入的门,是好是坏众说纷纭……
谁帮我澄清 空指针 和 void* 的区别??
看了很多中文翻译的书籍,好像没有给void*一个正确的翻译,有的时候也翻译成了空指针
什么空指针空值指针
好乱
void*一般怎么用一个专业术语称呼??
------解决方案--------------------
这只是叫法问题,不值得深究
一般空指针指的是 0 值的指针
void * 好像并没有特别的称呼
------解决方案--------------------
根据“飞雪”,tadom等大牛讲得都说void*就是空指针;
本人也曾经错误认识;
------解决方案--------------------
我一般直接用void指针NULL指针,代码层面的描述还是用代码语言……
专有名词不翻译应该成为一个规则……大家应该有所感觉,中文书里那些狗屎翻译大多集中在专有名词的乱翻译上,而对于我们这些专业人员来说,专有名词全英文不成问题的,都认识,倒是那种承接性的、描述性的(公共英语部分)是绝大部分中国人的短板
------解决方案--------------------
这种词就不应该翻译,
smalltalk翻译成 小谈话?
void *翻译成 空指针,
值为0的翻译成 0指针,
更加贴切。
ps: C++里用0,不用NULL,NULL是古老的做法,也是C++之父和primer作者不推荐的做法。
------解决方案--------------------
没见过英文原文,自己的理解是:无类型指针(有生于无,所以是一切指针的本源)
------解决方案--------------------
也是C++之父和primer作者不推荐的做法。
这俩人就是护犊子,曾经看c++Primer的时候感觉他们很对,现在感觉纯粹扯淡……NULL和0来区分指针和证书有什么不妥的地方?C++里用内置类型有什么不妥的?还什么“现代化的C++程序不应该出现指针!”C++Primer原话……真要是这样你干脆像C#那样给指针一个unsafe开关,平时禁止使用得了!
------解决方案--------------------
还是那句话,他们想另起炉灶,与C语言完全撇开关系……
------解决方案--------------------
你现在这个认识还是错的,void*不是空指针,只是指向空对象的指针。
还有空指针与空指针常量之分,C中的空指针常量指值为0、0L的整数常量表达式或( void* )0,C++则去掉了( void* )0。而空指针指的是具有一般对象类型的值为NULL的指针。
------解决方案--------------------
你就当世界上不存在空指针这种东西
void *可以称为万能指针,他可以指向任意类型的数据
因为无论是什么类型的指针,他所占的空间一定等于机器的字长,所以就诞生了void *的指针,void *指针主要是传参的时候很有用处
你使用的时候必须转换回来
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
在c语言里void*可以和任意指针互相的隐式转换,比如
int i = 0;
void*p = &i;
int *pi = p;
但是在c++里出于类型的安全,void*指针不能自由地隐式转换到其他类型指针,除了使用强制转换。
NULL在c里面是有的用于表示空(null)指针(void*)0。但是在c++里是用0表示的。c++标准规定NULL宏是一个由实现定义的c++空指针常量。之所以用0,也是出于上述原因void*不能任意隐式转换,但是数字0是可以的。
但是0的使用可能会在代码中带来一些更多的隐患。
在stddef.h里有定义:
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
------解决方案--------------------
------解决方案--------------------
C++Primer已经快成STL手册了,一般我用STL和模板问题的时候去查的比较多……
那俩作者确实很护犊子,没学过C的人去看C++ Primer基本上除了STL其他都不会用,写出来代码也和java、C#似的,不清楚这是不是作者的本意……我猜是的,我以前发过一个口水贴,质疑部分C++的用户“自称”不会C,这部分用户可能就是没学过C,直接用C++Primer入的门,是好是坏众说纷纭……