NULL & NUL in C

本文详细解释了NULL、NUL、''和EOF在C/C++中的含义及用途,特别是NULL作为空指针的定义及其重要性,以及NUL在ASCII字符集中的角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • NULL: 定义为0或0L或(void *)0,用于指示一个指针值是空,即什么都不指;
  • ‘\0’: 用且只用字符串结束符;
  • NUL : 0x00,0值字符,可以用于结束ASCII字符串,和’\0’类似,但是在c/c++中没有定义,如果要使用的话,需要自定义为 #define NUL ‘\0’;
  • EOF :通常定义为-1, 文件结束符标志,一般是ctrl+z.

NULL是在 stddef.h 头文件中专门为空指针定义的一个宏。
NUL是ASCII字符集中第一个字符的名称,它对应于一个零值。C语言中没有NUL这样的预定义宏。注意:在ASCII字符集中,数字0对应于十进制值48,不要把数字0和’/0’(NUL)的值混同起来。
NULL可以被定义为(void )0,而NUL可以被定义为’/0’。NULL和NUL都可以被简单地定义为0,这时它们是等价的,可以互换使用,但这是一种不可取的方式。为了使程序读起来更清晰,维护起来更容易,你在程序中应该明确地将NULL定义为指针类型,而将NUL定义为字符类型。*
对指针进行解引用操作可以获得它的值。从定义来看,NULL指针并未指向任何东西。因此,对一个NULL指针进行解引用操作是非法的。在对指针进行解引用操作之前,必须确保它并非NULL指针。

mysql5.5命令行安装winERR] CREATE TABLE `edoc_obj_team_member` ( `ID` bigint(20) NULL, `TEAM_TYPE` varchar(16) NULL, `TEAM_ID` bigint(20) NULL, `MEMBER_ID` bigint(20) NULL, `SORT_NUM` decimal(3) NULL ) ENGINE='InnoDB'; CREATE TABLE `edoc_opinion` ( `ID` bigint(20) NULL, `EDOC_ID` bigint(20) NULL, `AFFAIR_ID` bigint(20) NULL, `ATTRIBUTE` int(11) NULL, `OPINION_TYPE` int(11) NULL, `CONTENT` longtext NULL, `IS_HIDDEN` decimal(3) NULL, `CREATE_USER_ID` decimal(19) NULL, `CREATE_TIME` datetime NULL, `POLICY` varchar(255) NULL, `PROXY_NAME` varchar(255) NULL, `NODE_ID` decimal(19) NULL, `STATE` smallint(6) NULL, `SUB_EDOC_ID` bigint(20) NULL, `UPDATE_TIME` datetime NULL, `SUB_OPINION_ID` bigint(20) NULL, `DEPARTMENT_NAME` varchar(500) NULL, `ACCOUNT_NAME` varchar(500) NULL, `DEPARTMENT_SORT_ID` int(11) NULL, `SOURCE_SUMMARY_ID` bigint(20) NULL, `POST_INFO` varchar(100) NULL, `MEMBER_SORT_ID` int(11) NULL, `LEVEL_SORT_ID` int(11) NULL, `ORG_ACCOUNT_SORT_ID` int(11) NULL, `TYPE` int(11) NULL ) ENGINE='InnoDB'; CREATE TABLE `edoc_register` ( `ID` bigint(20) NULL, `IDENTIFIER` varchar(100) NULL, `RECIEVE_ID` bigint(20) NULL, `EDOC_ID` bigint(20) NULL, `EDOC_TYPE` decimal(3) NULL, `REGISTER_TYPE` decimal(3) NULL, `CREATE_USER_ID` bigint(20) NULL, `CREATE_USER_NAME` varchar(255) NULL, `CREATE_TIME` datetime NULL, `UPDATE_TIME` datetime NULL, `SEND_UNIT` longtext NULL, `SEND_UNIT_ID` bigint(20) NULL, `SEND_UNIT_TYPE` decimal(3) NULL, `EDOC_UNIT` longtext NULL, `EDOC_UNIT_ID` longtext NULL, `EDOC_DATE` datetime NULL, `REGISTER_USER_ID` bigint(20) NULL, `REGISTER_USER_NAME` varchar(255) NULL, `REGISTER_DATE` datetime NULL, `ISSUER_ID` bigint(20) NULL, `ISSUER` varchar(255) NULL, `ISSUE_DATE` datetime NULL, `SIGNER` varchar(255) NULL, `DISTRIBUTER_ID` bigint(20) NULL, `DISTRIBUTER` varchar(255) NULL, `DISTRIBUTE_DATE` datetime NULL, `DISTRIBUTE_STATE` decimal(3) NULL, `DISTRIBUTE_EDOC_ID` bigint(20) NULL, `SUBJECT` varchar(1024) NULL, `DOC_TYPE` varchar(255) NULL, `SEND_TYPE` varchar(255) NULL, `DOC_MARK` varchar(255) NULL, `SERIAL_NO` varchar(255) NULL, `SECRET_LEVEL` varchar(255) NULL, `URGENT_LEVEL` varchar(255) NULL, `KEEP_PERIOD` varchar(255) NULL, `SEND_TO` longtext NULL, `SEND_TO_ID` longtext NULL, `COPY_TO` longtext NULL, `COPY_TO_ID` longtext NULL, `KEYWORDS` varchar(255) NULL, `COPIES` decimal(10, 2) NULL, `NOTE_APPEND` varchar(1024) NULL, `ATT_NOTE` varchar(1024) NULL, `STATE` decimal(3) NULL, `ORG_ACCOUNT_ID` bigint(20) NULL, `REC_TIME` datetime NULL, `IS_RETREAT` decimal(3) NULL, `AUTO_REGISTER` smallint(6) NULL, `RECIEVE_USER_ID` bigint(20) NULL, `RECIEVE_USER_NAME` varchar(100) NULL, `EXCHANGE_MODE` smallint(6) NULL, `UNIT_LEVEL` varchar(255) NULL, `EXCHANGE_SEND_TIME` datetime NULL ) ENGINE='InnoDB'; CREATE TABLE `edoc_register_body` ( `ID` bigint(20) NULL, `CONTENT_TYPE` varchar(20) NULL, `CONTENT` longtext NULL, `REGISTER_ID` bigint(20) NULL, `CONTENT_NO` decimal(3) NULL, `CREATE_TIME` datetime NULL ) ENGINE='InnoDB'; CREATE TABLE `edoc_register_condition` ( `ID` bigint(20) NULL, `TITLE` varchar(255) NULL, `USER_ID` bigint(20) NULL, `ACCOUNT_ID` bigint(20) NULL, `CREATE_TIME` datetime NULL, `START_TIME` varchar(50) NULL, `END_TIME` varchar(50) NULL, `TYPE` smallint(6) NULL, `QUERY_COL` varchar(255) NULL, `CONTENT_EXT1` varchar(4000) NULL, `CONTENT_EXT2` varchar(255) NULL, `CONTENT_EXT3` varchar(255) NULL, `SEND_QUERY_TIME_TYPE` smallint(6) NULL ) ENGINE='InnoDB'; CREATE TABLE `edoc_sendform_file_relation` ( `ID` bigint(20) NULL, `EDOC_ID` bigint(20) NULL, `FILE_ID` bigint(20) NULL, `FILE_TYPE` varchar(20) NULL, `SIGN_STRING` longtext NULL, `OPINIONS` longtext NULL ) ENGINE='InnoDB'; CREATE TABLE `edoc_stat` ( `ID` bigint(20) NULL, `EDOC_ID` bigint(20) NULL, `EDOC_TYPE` decimal(3) NULL, `SUBJECT` varchar(1024) NULL, `DOC_TYPE` varchar(50) NULL, `DOC_MARK` varchar(255) NULL, `DEPT_ID` bigint(20) NUL [ERR] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NULL, `UNITID` bigint(20) NULL, `EDOCXSNID` bigint(20) NULL ) ENGINE='In' at line 5 [ERR] CREATE TABLE `portal_space_page` ( `ID` bigint(20) NULL, `PATH` varchar(255) NULL, `PARENT_ID` bigint(20) NULL, `PAGE_TYPE` smallint(6) NULL, `PAGE_NAME` varchar(500) NULL, `HIDDEN` int(11) NULL, `SKIN` varchar(80) NULL, `DEFAULT_LAYOUT_DECORATOR` varchar(80) NULL, `CANSHARE` smallint(6) NULL, `CANMANAGE` smallint(6) NULL, `CANPUSH` smallint(6) NULL, `CANPERSONAL` smallint(6) NULL, `SORT` int(11) NULL, `CREATOR` bigint(20) NULL, `CREATE_TIME` datetime NULL, `UPDATOR` bigint(20) NULL, `UPDATE_TIME` datetime NULL, `CANUSEMENU` smallint(6) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_space_security` ( `ID` bigint(20) NULL, `SPACE_ID` bigint(20) NULL, `ENTITY_TYPE` varchar(20) NULL, `ENTITY_ID` bigint(20) NULL, `SORT` int(11) NULL, `SECURITY_TYPE` smallint(6) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_space_sort` ( `ID` bigint(20) NULL, `MEMBER_ID` bigint(20) NULL, `SPACE_ID` varchar(255) NULL, `SORT` int(11) NULL, `TYPE` smallint(6) NULL, `ACCOUNT_ID` bigint(20) NULL, `DELETED` smallint(6) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_sysmenu_order` ( `ID` bigint(20) NULL, `MENUID` bigint(20) NULL, `ORDERID` int(11) NULL, `CREATETIME` datetime NULL, `UPDATETIME` datetime NULL, `CREATERID` bigint(20) NULL, `UPDATERID` bigint(20) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_template` ( `ID` bigint(20) NULL, `NAME` varchar(1024) NULL, `PATH` varchar(1024) NULL, `THUMBNAIL` varchar(1024) NULL, `PRESET` smallint(6) NULL, `DESCRIPTION` varchar(4000) NULL, `UPDATE_USER` bigint(20) NULL, `UPDATE_TIME` datetime NULL, `SORT` int(11) NULL, `CDEFAULT` smallint(6) NULL, `LAYOUT` varchar(100) NULL, `LAYOUTNAME` varchar(200) NULL, `STYLECODE` varchar(100) NULL, `CSSPATH` varchar(1024) NULL, `JSPATH` varchar(1024) NULL, `T_TYPE` smallint(6) NULL, `SCSS_FILE_ID` bigint(20) NULL, `VALUE_SCSS_FILE_ID` bigint(20) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_template_acl` ( `ID` bigint(20) NULL, `ENTITY_ID` bigint(20) NULL, `TEMPLATE_ID` bigint(20) NULL, `ENTITY_TYPE` varchar(255) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_template_choice_control` ( `ID` bigint(20) NULL, `ENTITY_TYPE` varchar(500) NULL, `ENTITY_ID` bigint(20) NULL, `ALLOW_CHOOSE` smallint(6) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_template_setting` ( `ID` bigint(20) NULL, `TEMPLATE_ID` bigint(20) NULL, `TEMPLATE_TYPE` smallint(6) NULL, `ENTITY_TYPE` varchar(50) NULL, `ENTITY_ID` bigint(20) NULL, `CURRENT_ACCOUNTID` bigint(20) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_theme_section_cfg` ( `ID` bigint(20) NULL, `THEME_ID` bigint(20) NULL, `SECTION_ID` varchar(100) NULL, `SECTION_STYLE_ID` varchar(100) NULL, `SECTION_STYLE` varchar(100) NULL, `SECTION_PROPERTIES` longtext NULL, `MEMBER_ID` bigint(20) NULL, `CREATE_DATE` datetime NULL, `SORT_ID` int(11) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_themes` ( `ID` bigint(20) NULL, `P_CODE` varchar(255) NULL, `P_NAME` varchar(255) NULL, `ACCOUNT_ID` bigint(20) NULL, `SYSINIT` smallint(6) NULL, `PRODUCTID` varchar(255) NULL, `SORT` smallint(6) NULL, `PARENTID` bigint(20) NULL, `PRE_IMG` varchar(500) NULL, `ISDELETE` smallint(6) NULL, `T_TYPE` smallint(6) NULL, `T_CATEGORY` smallint(6) NULL ) ENGINE='InnoDB'; CREATE TABLE `priv_commonauthority` ( `ID` bigint(20) NULL, `RESOURCEID` bigint(20) NULL, `RESOURCE_TYPE` smallint(6) NULL, `USERID` bigint(20) NULL, `USER_TYPE` bigint(20) NULL, `BEGIN_DATE` datetime NULL, `END_DATE` datetime NULL ) ENGINE='InnoDB'; CREATE TABLE `priv_menu` ( `ID` bigint(20) NULL, `NAME` varchar(255) NULL, `ICON` varchar(255) NULL, `TARGET` varchar(255) NULL, `SORTID` smallint(6) NULL, `PLUGINID` bigint(20) NULL, `PATH` varchar(255) NULL, `EXT1` varchar(500) NULL, `EXT2` varchar(500) NULL, `EXT3` varchar(500) NULL, `EXT4` smallint(6) NULL, `EXT5` smallint(6) NULL, `EXT6` smallint(6) NULL, `EXT7` varchar(500) NULL, `EXT8` varchar(500) NULL, `EXT9` va [SQL] Finished with error为什么报错
最新发布
06-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值