"" "\0" '0' '\0' 0 NULL “NULL” 区别与联系

一:

字符'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;
}

猜你喜欢

转载自blog.csdn.net/baidu_37964044/article/details/80051329