Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103084
  • 博文数量: 23
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-22 10:44
文章分类

全部博文(23)

文章存档

2018年(3)

2017年(1)

2015年(1)

2014年(18)

我的朋友

分类: C/C++

2014-07-24 09:48:34

学习C语言的,对于0,'0',‘\0’ 三个零并不陌生,但有时候确不知道它们是怎样相等又怎样不相等的。
首先说明一下三个零:
0: 整型数字0
'0':字符ASCII是48
'\0':转义字符,表示字符串结束,ASCII是0

下面用一段代码说明三个0 之间的异同:

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>

  4. int main()
  5. {
  6.     char zero = '0';
  7.     int izero = 0;
  8.     char *p = "a0";

  9.     printf("zero:%d izero:%d\n", zero, izero);
  10.     int i = 0;
  11.     for(i;i < 3;i++)
  12.     {
  13.         printf("p[%d]: *%d*\n",i, *(p + i));    
  14.     }


  15.     printf("zero char:*%c* izero char:*%c*\n", zero, izero);
  16.     i = 0;
  17.     for(i;i < 3;i++)
  18.     {
  19.         printf("p[%d]: *%c*\n",i, *(p + i));    
  20.     }

  21.     return 0;
  22. }
代码运行结果:
zero:48 ==》字符0的ASCII值  izero:0 ==》整数0的值
p[0]: *97*==》字符a的ASCII值
p[1]: *48*==》字符0的ASCII值
p[2]: *0*==》'\0'的ASCII值

zero char:'0'  ==》字符'0'按字符形式打印的字符0  izero char:'' ==》整数0 以字符形式打印为NULL,相当于'\0'
p[0]: *a* ==》字符a
p[1]: *0* ==》字符0
p[2]: ** ==》'\0'以字符打印,打印不出来。

通过此例可以看出,0和'\0'在ASCII值和字符都是一样的,字符'0' ASCII值是48
在memset函数中设置一个数组的内容是NULL时,可以写成memset(array, 0, sizeof(array)); 或者memset(array, 0, sizeof(array));






阅读(1845) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~