(个人理解,有误请指正)
本文采用c语言进行编译,printf打印时需要强制选择打印的类型,能帮助大家更好的进行理解。
char类型我个人倾向于理解成一个有着存储范围的int类型来理解。
单个字符
对于单个字符,char类型更像一个int类型,只支持单个字符或者数字的输入,存储形式为ascii形式。
char name1=65;
char name2='A';
printf("%c--%d\n",name1,name1);
printf("%c--%d\n",name2,name2);
//%c 为字符类型输出
//%d ascii码
//打印结果
A--65
A--65
我们能看到无论存入的是字符还是ascii,他的表现形式都是一样的。
那么对于不可见ascii或者超出ascii的数字呢?
char name1=255; //最后一位
char name2=256; //超出范围
printf("%c--%d\n",name1,name1);
printf("%c--%d\n",name2,name2);
//输出结果
�---1
--0
超出ascii的部分则无可显示的字符,且储存的数值为0
128-225范围内显示?字符,储存的数字为256-当前ascii
多个字符
当然咱们的日常使用中不会建立一个个的char去储存一个字符,通常已数组的形式来储存字符串。
char n1[]="ABCDE"; //通常使用方式
对于char数组临界
char n1[4]="ABCDE"; //对于空间不足的不予储存
printf("%c--%c--%c\n",n1[0],n1[3],n1[4]);
//运行结果
A--D--�
指针
char n1[5]="ABCDE";
char *n3=n1;
printf("%c--%c--%c\n",n3[0],n3[1],n3[2]);
//运行结果
A--B--C