声明数组时应注意以下三点:
存储在每个元素中值的类型;数组名;数组中的元素数;例如:short months[12];表示创建了一个名为months的数组,包含12个short类型的元素。 通用格式:typeName arrayName[arraySize]; 数组从0开始编号,months[0]是 short months的第一个元素。 数组的初始话规则:
只有在定义数组时可以初始化,不过可以使用下标修改数组某一元素的值。若只对数组的一部分初始化,其他值默认为0;如果初始化时方括号内为空,则C++编译器会计算元素个数。C-风格字符串必须以空字符结尾。类如:char dog[5] = { 'b', 'e', 'a', 'u','\0' } ;且必须加上单引号。 另一种创建字符串的方法:
char bird[10] = "Mr.Cheeps"; //空字符自动加在数组的后面,bird是一个数组,里面包含了字符串。 char fish[] = "Bubbles"; //编译器自动确定字符串的长度,并且最后一位是空字符C++对字符串的长度没有限制。 在确定字符产所需的最短数组时,记得算上空字符。 字符串常量“s"不能与字符常量’s’互换,例如:char shirt_size = 's';是将s的ascii编码83赋给shirt_size;而char shirt_size = "s";是将{'s','\0'};赋给字符串shirt_size。
将字符串存储到数组中的2种方法:①将数组初始化为字符串常量;②有键盘或文件输入。 例如:
char name1[15]; cin >> name1; //由键盘读入 char name2[15] = "C++0wboy"; //将数组初始化为字符串常量strlen()函数只计算可见字符,不包括空字符;
istream 种的面向行的类成员函数:getline(),get().
面向行的输入 :getline() 通过回车或换行符确定结束,也可以使用cin.getline(name,Arsize);其中name是存储输入行的数组名称,Arsize是读取的字符数,且最后一位为空字符。面向行的输入:get() 不带任何参数的cin.get()可以调用读取下一个字符。有问题加cin.get()
在main 函数前加#include <string> string 类可以根据程序自动调整大小,如string str1;是长度为0的string类;cin >> str1时,str1的长度跟随键盘输入。
cstring提供的string计算函数:strcpy()将字符串复制到字符数组中,strcat()将字符串附加到字符数组末尾;
strcpy(charr1,charr2); //将charr2复制到charr2中 strcat(charr1,charr2); //将charr2附加到charr1后结构可以存储多种类型的数据。例如:
struct inflatable { char name[]; float volume; double price; };相当于创建了一个新类inflatable,其中包含3个成员。 在函数外面声明的结构可以被所有函数使用,在函数内部声明的结构只能被该函数调用。 给结构内部的量赋值:
struct_name name = { "****" , //为字符串时 89, //为数字时 }可以同时创建结构和定义变量,例如:
struct perks { int key_number; char cat[12]; } mr_smith,ms_jones;可以创建元素为结构的数组,数组的每一个元素都是一个结构,类如,inflatable为已经被定义好的结构,则
inflatable gifts[100];gifts为元素为inflatable结构的数组。
共用体可以存储不同的数据,但只能存储int,long 或double中的一个。(没看懂)
例如:
enum spectrum {red,orange,yellow,green,blue,violet,indigo,ultraviolet};即spectrum为一个枚举类型;
spectrum band; //创建一个spectrum的变量对于枚举,只定义了赋值操作,没有定义算数运算操作,即+,-,*,/对枚举操作无效。 枚举量是整形,可以提升为int类型,但int类型不能自动转换为枚举类型。
枚举范围的查找: 找到大于枚举量的最大值的最小2的幂,再减去1。如枚举量最大为101,则这个枚举的范围上限为128-1=127;下限与上限类似,如枚举量最小为-6,则下限为-8+1=-7。
指针是一个变量,其存储的是值的地址,而不是值本身。 在变量前加(&)操作符即可找到地址。如home是变量,&home是地址。 指针名表示的是地址,*操作符为间接值或解除引用操作符,在指针前加 *可以找到该地址存储的值。
格式:
int* pt; //声明指针 int* pt1;* pt2; //同时声明2个指针pt是指向int类型的指针,*pt是int类型的数值。
类如:
int* pn = new int;new int 告诉程序,找到适合存储int的内存,new操作符根据字节来确定需要多少字节的内存,然后找到这样的内存,并返回其地址。
需要内存时,通过new来请求,用过之后,可以使用delete放回内存池。例如:
int *pt= new int; //定位内存 ... delete pt; //释放内存new与delete要配对使用。
静态联编(static binding):在编译时给数组分配内存的方式。 动态联编(dynamic binding):在运行时根据需要分配内存的方式。
new 创建动态数组: int * psome = new int[10];new返回第一个元素的地址,该地址赋予psome,程序结束时,应使用delete释放内存。
delete [] psome;如果使用new时使用了[],则在delete时也要用[]。
动态数组的使用 将指针看成数组使用即可,例如psome[0]是动态数组第一个值,psome[2]是动态数组第二个值。 释放内存时,要将指针指到原来的地址才能使用delete [ ] 释放。指针增加1后,其增加的量等于它指向的类型的字节数。