一:
字符'0' :char c='0',它的ASCII码为值48,内存中存放00110000
字符'\0' :char c='\0',它的ASCII码值为0,表示一个字符串结束的标志(转义字符)
数字0 :它的ASCII码值为0,字符表示空字符,数值表示为0,内存中表示00000000
二:
在数值上NULL ,‘\0' , 0是一样的,都是0.但是'0'就不同了,在ASCII中编码为48.
三:
在内存中NULL和'\0',和‘0’都是一个8位的char类型,NULL和'\0'值一样都是0,以数字方式读取就是0,以字符串方式读取就是'\0'或者null(和编译器有关)。而'0'在内存中存贮着48,以字符读取就是'0',以数字读取就是48.
四:
在C++中 NULL代表0 #define NULL 0
在C语言中 NULL代表空指针 #define NULL ((void *)0)
#include<iostream> #include<string.h> using namespace std; int main ( ) { cout << strlen ( "NULL" ) << endl;//4 cout << strlen ( "" ) << endl;//0 cout << strlen ( "\0" ) << endl;//0 //注意:'\0'代表转义字符,是一个字符 ,如果就要让其表示两个字符,方法往前面再加上一个'\' cout << strlen ( "\\0" ) << endl;//2 // cout << strlen ( NULL ) << endl;//崩溃 cout << sizeof ("NULL") << endl;//5 cout << sizeof("") << endl;//1 cout << sizeof ("\0") <<endl;////2 cout << sizeof("\\0") << endl;//3 cout << sizeof(NULL) << endl;//4 printf ( "%d\n", sizeof(NULL) );//4 printf ( "%d\n", 0 );//0 printf ( "%d\n", '0' );//48 printf ( "%d\n", NULL );//0 printf ( "%d\n", '\0' );//0 printf ( "%c\n", 0 );//空 printf ( "%c\n", NULL );//空 printf ( "%c\n", '0' );//0 printf ( "%c\n", '\0' );//空 printf ( "%s\n", "\0" );//空 printf ( "%s\n", 0 ); //(null) printf ( "%s\n", NULL );//(null) printf ( "%s\n", '\0' );//(null) // Test ( ); system ( "pause" ); return 0; }