首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    前言 在C语言中,我们有时候看到NULL,有时候也看到'\0',那它们之间有什么区别呢? 本质 本质来说,NULL,0,'\0'都是一样的,都是值0。是的,你没有听错。说到这本文差不多应该结束了。...它们虽然值都是0,但是含义却是不一样的。 NULL 虽然值是0,但是它的含义不一样,或者说它的类型不一样。NULL是指针类型,不过它是空指针,即值为0。...是的,它们都以遇到'\0'结束。 注意,它和'0'完全不一样。通过打印就可以看到了,实际上'\0'的值就是0。 需要特别注意的是,如果'\0'的0后面跟八进制的数,则会被转义。...所以'\60'与'0'的值一致。 0 这个不用多解释。...int a = 0; "0" 用双引号包裹的0是字符串,我们看不到的是它结尾还有一个’\0‘ #include int main(void) { char str[] = "

    2.4K20

    关于00的区别?!

    我写的好像是直接 *arr1,但是,原本那段数组是字符串,最后的位置是’\0‘而不是0,那我这就开始怀疑,有了疑问。...解决问题 关于我以为0和‘\0’其实是差不多的,因为在ASCII码表里面0的位置就是‘\0’。但是,其实真正一样的其实是数字0和字符‘\0’而不是字符0和‘\0’,还是得注意一下的。...字符0的ASCII码值是48,和‘\0’完全不同。 所以千万不能把这几个长得像0的给弄混淆了,一定要在循环里面真正的理解每一个的含义,不然一不小心,都会成为死循环,或者说错误的结果。...下面就是一段例子,通过这个代码来理解一下,数字0转化为‘\0’的过程。...} 其中的那段话,就是运用了数字0变为终止的‘\0’。

    12810

    &0xffffffff(0x08)

    0x3f3f3f3f的十进制是1061109567,是10^9级别的(和0x7fffffff一个数量级),而一般场合下的数据都是小于10^9的,所以它可以作为无穷大使用而不致出现数据大于无穷大的情形。...最后,0x3f3f3f3f还能给我们带来一个意想不到的额外好处: 如果我们想要将某个数组清零,我们通常会使用memset(a,0,sizeof(a)),方便又高效,但是当我们想将某个数组全部赋值为无穷大时...,就不能使用memset函数而得自己写循环了,因为memset是按字节操作的,它能够对数组清零是因为0的每个字节都是0(一般我们只有赋值为-1和0的时候才使用它)。...现在好了,如果我们将无穷大设为0x3f3f3f3f,那么奇迹就发生了,0x3f3f3f3f的每个字节都是0x3f!...所以要把一段内存全部置为无穷大,我们只需要memset(a,0x3f,sizeof(a))。 所以在通常的场合下,0x3f3f3f3f真的是一个非常棒的选择!

    70120

    a+‘0‘ 和 a-‘0‘的区别

    在C语言的使用过程中,会经常遇到与字符 ‘0’ 进行运算的情况,那他们的区别是什么,我在这个地方将它们记录下来: 在ASCII表中,可以查到字符’0’对应的十进制数为48....\n", a + '0', a + '0'); printf("b - '0' = %d, 即%c\n", b - '0', b - '0'); 结果为: a + ‘0’ 首先,给int类型a...赋初值49,输出其对应的ASCII码为字符’1’.然后让a 加上’0’,发现表达式的值为97 = 49 + 48,对应的ASCII码为字符’a’.所以a + '0’指的是加上字符’0’对应的十进制48,...b - ‘0’ 同样,给字符型b赋初值’a’,输出其对应的十进制整数为97.然后使b-‘0’,得到表达式的值49 = 97 - 48,对应的ASCII码为字符’1’。...所以b - '0’指的是减去字符’0’对应的十进制48,把b变成int类型。

    89610
    领券