意义不同
单引号 包起来的字符我们一般认为是int型,虽然看起来是char,但其实是由ASCII码对应的字符,例如:'T'和十进制数84在使用中含义一致。
'a'+1是指'a'的ASCII码+1,也就是'b'
双引号包起来的字符,代表的是一个指向该数组首地址的字符指针。
"a"+1是指指针运算,指针指向数组“a”的结束符'\0'
大小不同
单引号包起来的一个字符就是一个字节大小,两个字符就是两个字节大小
双引号包起来的一个字符就是两个字节大小,两个字符就是三个字节大小... 因为双引号包起来的内容属于字符串,会在字符串末尾添加一个二进制为0的字符’\0’。
char ch[2] = "A"; //此处想保存一个字符串"A",需要两个字节大小的数组
容易出现的问题
- 大小不对应
char c = "string";
在这个声明阶段,"string"其实是一个4字节的char *指针,而char类型只有一个字节,大小不同,会发生截断。
- 在使用中可以如果判断变量是否为某字符,就应该使用单引号使之自动转化为ASCII码进行判断。
获取ASCII码
此处插入一个ASCII码的获取方式:
char y='X';
printf("%c ",y); // 取得字符X
printf("%d ",y); // 取得字符变量的ascii码,十进制数
printf("%x ",y); // 取得字符变量的ascii码,十六进制数