字符类型char、字符串与字符数组、字符数组与数据数组区别

字符类型是以ASCII码值运算的:
小写字母比相应的大写字母大32,其中A=65,a=97
Esc键 27(十进制)、'\x1B'(十六进制)、'\33'(八进制)

转义字符:
\0 空字符     ASCII码值 0
\n 换行
\r 回车
\t 水平制表符(Tab键)
\' 单引号
\" 双引号
\\ 反斜杠

注意:英文字符用单引号,中文字符用双引号(2个字节/中文字符,以字符串方式存储)

#include<iostream>
using namespace std;

int main()
{
    char c = 'M'; //等效于ch=77;M的ASCII码值77,'\x4D'或'\115'
    char b[] = "";//2+1=3个字节
    char str[] = { '1','m',"" };//1+1+(2+1)=5个字节
    cout << str[2]<<str[3];//中文字符,2个字节,都输出才输出“嗨”
    return 0;
}

字符串与字符数组

字符串:以隐含的空字符\0结束,占用字节数+1,注意:1字节/字母,2字节/汉字
字符数组:不包含空字符,占用字节数不需+1

char ch[6]= "China"; //6字节,ch[5]是\0
char ch[5]={'C','h','i','n','a'}; //5字节
char str[3][5] = { "Tom","John","Mary" };//3×5=15字节。定义变量就是划定内存

字符数组与数据数组区别:
字符数组输入\输出时,不需要循环遍历,cout对字符型指针变量做了特殊处理,具体如下

#include<iostream>
using namespace std;
int main() {
    char str[4] ="Tom";//3+1=4字节
    char *p = str; //指向首地址
    cout<<p<<endl; //Tom,全部输出,从首地址到最后的值。
    cout << p + 1 << endl;//om,从第二个地址到最后的值。
    cout << p[0]<<endl; //T,等效于*p
    cout << (int *)p << endl; //显示首地址
    return 0;
}

 

posted @ 2018-12-06 21:55  夕西行  阅读(8192)  评论(0编辑  收藏  举报