在尝试理解这个问题前要先明白ASCII码,0we和‘\0"的替换使用就是通过ASCII码来实现的
'0'是字符0,对应ASCII码值为48(十进制)
'\0'是转义字符,对应ASCII码值为0(十进制)
0是数字0
在学习时有时会混淆就是因为字符型数据在内存中以ASCII码形式存储,由于此0又在一些情况下可以和'\0'相互替换,为了便于理解,进行以下测试:
#include<stdio.h>
int main()
{
char arr1[] = { 'a','b','c',0 };
char arr2[] = { 'a','b','c','\0'};
char arr3[] = { 'a','b','c','0'};
char arr4[] = { 12,13 ,14,0 };
printf("%d", strlen(arr1));
printf("%d", strlen(arr2));
printf("%d", strlen(arr3));
return 0;
}
对arr各数组进行赋值并监视
对比arr1[3],arr2[3],arr3[3]可知'\0'和0在内存中的存储形式是一致的,而'0'是字符0,是和转义字符\0不同的字符
对上述程序进行运行,也可证明'\0'和0两者一致
同理,整形数组中也可以用相应字符进行替换,不再一一赘述。
推而广之,由于ASCII码和字符一一对应并且以ASCII码存储,故可看作一种事物的两种不同表述也是 '\0'和0可以替换的根本原因至于'0'是和前两者不相干的字符和48(十进制)对应。
小白一个,自以为搞懂了一些东西,有点兴奋,如有不足,请不吝赐教。