首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NULL00,“0”,0你真的分得清吗?

前言 在C语言中,我们有时候看到NULL,有时候也看到'\0',那它们之间有什么区别呢? 本质 本质来说,NULL0,'\0'都是一样的,都是值0。是的,你没有听错。说到这本文差不多应该结束了。...它们虽然值都是0,但是含义却是不一样的。 NULL 虽然值是0,但是它的含义不一样,或者说它的类型不一样。NULL是指针类型,不过它是空指针,即值为0。...; printf("%p\n",a); return 0; } 我们编译它: $ gcc -o null null.c null.c: In function ‘main’: null.c...实际上NULL通常是如下定义: #define NULL (void*)0 所以,如果要给一个指针类型初始化,那么你给它一个NULL,使得能够明显的看到这是一个指正。...当然,在C++中,你更应该使用nullptr,而不是NULL。 '\0' 我们都知道\是转义符,用单引号包起来,再加转义,实际上就是0,只不过它表示的是字符。

1.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

【代码规范】详解nullptr、NULL0

【代码规范】详解nullptr、NULL0 最近一直搞不清楚 nullptr, NULL, '\0'这三者的真正区别,因为有的时候会发现,混用这三种用法,编译器也不会报错,在这里对相关的一些定义和使用方式进行整理...其实本质上nullNULL都是符号,只是在不同的编译器上NULL被宏定义指定内容,null没有定义而已。 例如在vs环境中,NULL被指定为0,代码如下。 ?...NULL0 其实NULL0的关系在上面已经讲的差不多了,因为C++中不能将void *类型的指针隐式转换成其他指针类型,而又为了解决空指针的问题,所以C++中引入0来表示空指针,在一些编译器上又会用...标准允许将 NULL 定义成 (void*)0,所以在 NULL 被定义成 (void*)的时候,如果使用 NULL 来结束字符串,编译器必然会提示警告存在可能性空指针的区域并未清0,引发未知的错误。...所以在C++中NULL不可以用于字符串的末尾,支持0和'\0'作为字符串结尾。

1.4K20

mysql从5.7迁移表结构到5.5报错 near ‘(0) NULL DEFAULT NULL

; check the manual that corresponds to your MySQL server version for the right syntax to use near '(0)...NULL DEFAULT NULL' 报错的那一行内容为 `refund_success_time` datetime(0) NULL DEFAULT NULL COMMENT '退款成功时间', 宣言博客...那么sql语句一般是正常没问题的, 一般是环境差异导致的,如(版本不同) 原来的表创建过程是使用软件可视化的,datetime长度这里没有填写,默认是为0,所以首先是对这个的不理解 从这里去找了资料,发现对...datetime长度的说明资料很少,但还是有一个百度回答说到了(虽然不够准确) 原文为: 在navicat里面datetime的长度好像指的是秒后面的小数点位数,可以设置为0-6位 不准确的地方有以下...NULL DEFAULT NULL 改为 datetime NULL DEFAULT NULL

2.7K30

C语言中NULL究竟是不是0 等问题?

有人提问:C语言中NULL究竟是不是0 等问题? NULL与数字0是不是等价的?...NULL可以理解为p指向地址值为0的内容? 就当前的定义来讲,可以这么理解,不过,之前就已经在《为什么解引用NULL会出现挂死》中说过,访问0地址的内容是不被允许的!...通俗讲就是 int *p = (int*)NULL; 那么int*类型的p和void*类型的NULL,一定是相等的。 NULL一定得是0值吗?...实际上,NULL可以是整数0(C++中NULL0,相关阅读《为什么建议你用nullptr而不是NULL》),也可以是某个整数值转换为void*。 实际上NULL并不一定需要是0。...NULL的值可以为0,但不是必须为0 NULL用来和其他指针对象和函数区分开 NULL0含义不一样 ?

2.6K20
领券