C语言中“ a”和“ a”之间以及“ 3”和“ 3”之间有什么区别?


回答 1:

“”之间的任何内容均视为字符串(字符数组),而“”中的任何内容均视为单个字符。

每当您使用“”时,都会在字符串的末尾插入一个空字符(\\ 0)以标记该字符串的末尾。您还可以通过其索引访问字符串中的每个字符,就像访问数组中的元素一样。

如果要处理单个字符,则需要使用单引号,如果要处理字符串,请使用“”。

像char a =“ a”之类的东西;会引发错误,因为字符串存储为指针,而字符存储为等效的ascii代码(整数)


回答 2:

双引号定义了以nul结尾的字符串。单引号不会这样做。

“ a”定义0x61、0x00
'a'定义0x61

“ 3”定义0x33、0x00
'3'定义0x33

所以我们可以定义

char * p =“ 3”;

但是我们做不到

char * p ='3';

会出现类似“使用rvalue char初始化char *变量类型”的错误。

但是我们可以做到

char c ='3';