C/C++__字符串的结束符“\0”到底是什么

一直对字符串的结束符"\0"的具体意义感到困惑,今天实际测试了一下,最终我找出来了答案。


#include 
#include 

#pragma warning(disable:4996)

#define MAXN 2000


int main(int argc, char **argv){
	char szFileName[MAXN] = "\0";
	//char szFileName[MAXN] = { 0 };
	
	printf("%d %d\n", szFileName[0], '0');
	//printf("%d %d\n", szFileName[1], '0');
	
	/*
	for (int i = 0; i < argc; i++)
	{
	strcat(szFileName, argv[i]);
	strcat(szFileName, "   ");
	}
	printf("%s\n", szFileName);
	*/
	return 0;
}


C/C++__字符串的结束符“\0”到底是什么_第1张图片



通过以上程序,我们不难发现“\0”即为转义字符\0,也就是ASCII码表中的第0号。

转义字符表:

所有的转义字符和所对应的意义:
转义字符
意义
ASCII码值(十进制)
\a
响铃(BEL)
007
\b
退格(BS) ,将当前位置移到前一列
008
\f
换页(FF),将当前位置移到下页开头
012
\n
换行(LF) ,将当前位置移到下一行开头
010
\r
回车(CR) ,将当前位置移到本行开头
013
\t
水平制表(HT) (跳到下一个TAB位置)
009
\v
垂直制表(VT)
011
\\
代表一个反斜线字符''\'
092
\'
代表一个单引号(撇号)字符
039
\"
代表一个双引号字符
034
\0
空字符(NULL)
000
\ddd
1到3位八进制数所代表的任意字符
三位八进制
\xhh
1到2位十六进制所代表的任意字符
二位十六进制
注意:区分,斜杠:"/" 与 反斜杠:"\" ,此处不可互换




下面为ASCII码表:

C/C++__字符串的结束符“\0”到底是什么_第2张图片


另外附上一段程序证明\0即为ASCII码中的0

#include 
#include 

using namespace std;

int main(){
	char a[20] = "Hi,Kemeng~";

	printf("%s\n", a);
	a[2] = 0;
	printf("%s\n", a);

	return 0;
}
C/C++__字符串的结束符“\0”到底是什么_第3张图片

你可能感兴趣的:(C,C++)