日积月累,日新月异
本篇主要介绍c++中有关数组和字符串相关知识。
数组声明(与java的一致)
type arrayName[size];
数组数据的获取和java相同使用 arrayName[对应下标,从0开始],同样的编译器无法告知你是否超出数组的范围,java中超出范围会抛出index of exception 数组越界异常,c++则不一定,c++中属于按地址取值,如果对应位置有数据则显示数据,反之则可能报错。
c+中允许以下声明
int a[3];
java中不允许,因为此时未给其申请内存,属于不可用。 c++中此时可以通过 a[0]~a[2] 进行赋值,如果进行初始化操作也是不允许的。比如:int a[3]; a[3]={1,2,3}
;c++ 中数组初始化规则:只有在定义数组的时候才可以使用初始化,此后不允许使用,也不能将数组赋值给另一个数组。(c++中对于地址有专门的描述方式比如指针,有关地址的处理上就可能不一样)
int a[4]={3,6,8,9}; //c++ 允许,java不允许 int a[]={3,6,7,8}; // c++ 允许 java 允许 int a[4]; //c++ 允许 java不允许 a[4]={1,2,3,4}; //c++和java都不允许 int a[]={3,6,7,8}; int b[]; b=a; // c++不允许 java允许
数组的操作在java 中和对象的是一致的,” = ” 是将引用copy, b=a 相当于b,a指向同一个数组或者对象。C++中对象的操作类似java,原理还带深入,不过表现是一致的,但是数组操作是不一样的。数组地址采用的是常量指针,所以不允许重新赋值,换言之如果采用的不是常量指针就是可以的,究竟处于什么考虑这样设置,还需深究
举例,c++ 对象行为是允许的
A a,b; a=new A(); b=a;
声明字符串可以采用
char fish[]=" ddff";
字符串的存储上最后一位是空字符,用于标识字符串结束使用string的时候需要导入同文件
cstring或者string.h
(c语言风格)strlen 计算可见字符的长度 sizeof(arrayName) 数组的长度,字符串输出到出现空字符的时候停止,即使此时有其他的字符
要使用string类的时候必须包含头文件string 注意是小写,还需要使用命名空间
using namespace std; //(c++风格)
c++字符串的声明是小写的string,java中是大写,而且c++中字符串可以当做数组处理
例子:string str1="test"; cout<<str1[0]; //结果为t
不能将数组赋值给另一个数组但是可以将string对象赋值给另一个string对象
string简化了字符串合并操作,可使用+或者+=等同于java中的用法
对于c语言风格如果想copy字符串可以使用
strcpy(char1,char2); //copy char2 to char1 strcat(char1,char2);//append char2 to char1