字符和字符串的理解
1、 C语言中:针对单个字符的处理,使用char类型; 而针对字符串,使用字符数组来存储和处理字符串,以 \0 结尾;其中字符串的长度为有效字符,不包括 \0 。字符数组的长度处理要看是字符还是字符串!
(1)C风格字符串,只要是使用双引号“ ”的,都会以 \0 结束,就是说在结尾会多出一个字符。
(2)凡是数组没有指名大小的定义,全部都会以赋值号右边的初始化长度作为数组默认大小。
例子:(1)字符串 "abcd" 长度为4,是因为字符串长度指的是字符串中有效字符的个数,不包含C风格结束符\0;
(2)而字符串数组a[]="abcd"长度为5,因为这个是算的数组的长度,也就是所占用的存储空间,当然要包含\0结束符(它也要占用存储空间);
(3)a[10]= "abcd" 的长度为10,因为你显示指定了字符数组的长度,所占内存当然就是10,它的存储空间是连续的,也就是说,10个字符空间中,前面分别是a,b,c,d 和结束符\0,后面全部都是
0(被初始化了),总共有5个0,加上前面的abcd和结束符\0,一共10个,他们的存储是连续的;
(4)a[ ]= {'a','b','c','d'} ,你没有按照双引号定义,因此不算C风格字符串,只是一个字符数组。而又没有指名大小,则它的大小等于初始化的长度,这里就是4,sizeof也等于4,没有结束符\0了。
2、C++中: 针对字符的处理,仍然用 char类型; 而针对字符串,也可以按照C语言一样使用字符数组;也可以使用 string 类,包含头文件#include<string> 使用。
顾名思义,string是一个类,所以它声明的是对象,对象可以像指针一样操作; 同样字符串的长度不包括尾部的\0;
例子:
cin>>str[0];
cout<<str; 和数组相同,这里输出的是首地址(因为数组名,代表数组的首地址)。
(3) char str; 只能输入一个字符。
(4) char str[10]; 可以输入一个字符串,但是长度小于10;
cin>>str;
字符指针和字符名称,可以单个也可以整个输出。