一、char型字符字符串
字符:
char型对应ASCCII码中字符,int对应ASCCII中的十进制
char ch = 97;
cout << ch << " " << (int)ch <<endl; //输出a 97
char ch2 = 'a';
ch2+=1;
cout << ch2 << " " << int(ch2) <<endl; //输出b 98
字符串指针:
char *ch3 = "abc";
cout << sizeof("abc") << " " << char(*(ch3+1)+1) << " "<<ch3[1] <<endl;//输出4 c b
可以看出,字符串内含有\n字符串结束符,但是这是栈分配的字符串,只能用char型指针指向首地址(a的地址)。
而且ch3是指针变量,其值可以改变
字符数组:
char str[] = {'a','b','c','\n'};
cout << sizeof(str) << " " << str[1] << " " <<str << endl;;//输出4 b abc 烫烫烫烫0媱
乱码为\n ,其值可以被改变
字符串数组:
char str1[] = "abc";
cout << sizeof(str1) << " " << str1[1] << " " << str1 << endl;//输出4 b abc
可以初始化,但是,str的值不能被改变,去决定"abc"为const char
字符串指针数组:
char *str2[] = {"a","b","c"};
cout << sizeof(str2) << " " << *str2 <<endl;//输出12 a
一个指针4个字节,一共有三个元素所以为12,sizeof(str2[0])为4
总结:
1.分配字符并不占用内存,只是变量占用内存
2.分配字符串的时候,字符串占用栈内存,需要定义一个指针指向这块内存
3.当用数组存储字符串时,字符串中的字符一一赋值给数组的每个元素。
4.char初始化字符串一共有两种方法,char *y = "hello"; charz[] = "hello";
二 char* char[] string 相互转换