char *strSvccode = (char *)0这种写法是什么意思?

shaxiren 2003-08-20 11:48:34
清高手执教
...全文
45 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨星 2003-08-21
  • 打赏
  • 举报
回复
至少从效果上看,
char *strSvccode = (char *)0;

char *strSvccode = NULL;
没有任何区别(前提是NULL被define成0)。
ehhl 2003-08-20
  • 打赏
  • 举报
回复
同意楼上,char *strSvccode = NULL的意思
积木 2003-08-20
  • 打赏
  • 举报
回复
看看标准C的定义就知道了
#define NULL 0 ;
所以
char *strSvccode = (char *)0

char *strSvccode = NULL
是等价的
详细的讨论,请看看C的陷阱与缺陷的3.5节
DisplayWorld 2003-08-20
  • 打赏
  • 举报
回复
ANSI
ANSI 是个人计算机使用得最普遍的字符集。由于 ANSI 标准使用单一字节表示每个字符,因此最多只能有 256 个字符和标点符号代码。虽然对英语来说已经足够了,但不能完全支持其它语言。

DBCS
发行在亚洲大部分地区的 Microsoft Windows 系统使用 DBCS。它支持很多不同的东亚语言字母,如汉语、日语和朝鲜语。DBCS 使用数字 0–128 表示 ASCII 字符集。其它大于 128 的数字作为前导字节字符,它并不是真正的字符,只是简单的表明下一个字符属于非拉丁字符集。在 DBCS 中,ASCII 字符的长度是一个字节,而日语、朝鲜语和其它东亚字符的长度是 2 个字节。

Unicode
Unicode 是用两个字节表示每个字符的字符编码方案。国际标准组织 (ISO) 几乎为每种语言的每个字符和符号在 0 到 65,535 (216 – 1) 范围内定义了一个数字(再加上为将来发展保留的一些空余空间)。在所有 32 位版本的 Windows 中,部件对象模型 (COM) 都使用 Unicode,它是 OLE 和 ActiveX 技术的基础。Windows NT 全部支持 Unicode。虽然 Unicode 和 DBCS 都是双字节字符,但它们的编码方案完全不同。

0-31不被Microsoft Windows支持,所以(char *)0,被转换成为了ANSIC标准的第一个字符;
sharkhuang 2003-08-20
  • 打赏
  • 举报
回复
其实就是char *strCvccode=NULL!
DisplayWorld 2003-08-20
  • 打赏
  • 举报
回复
goodboy1881(三井),
yangsiqun(郁闷的不得了):

(char *)0 == NULL ?

那 #define NULL 0 写成 #define NULL (char *)0 好了!

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧