1.面向行输入可使用getline()和get()函数。getline()以换行符确定字符串的结束位置,并且舍弃换行符,用\0代替换行符。get()函数也是以换行符来确定字符串的结束位置,但不同的是将换行符保存在输入队列中,连续两次使用get时可以cin.get(strname,size);cin.get();cin.get(strname1,size);或者get将两个类成员函数拼接起来cin.get(strname,size).get();cin.get(strname1,size)。对于getline,cin.getline(strname,size).getline(strname1,size)。cin读取空行时需要用到cin.clear()。
2. cin.getline(charr,len),cin为对象,getline为类方法,参数为数组名charr和数组长度len。对于string类对象存储字符串时,使用getline(cin,str),这里cin为参数,getline不是类方法,是个函数。
3.strlen(charr),求数组字符个数,charr为参数;str.size(),str为对象,size为函数。
4.枚举 enum spectrum {red,orange,yellow,green,blue,violet,indigo,ultraviolet},枚举量默认为{0,1,2,3,4,5,6,7},后者比前者大1,可以自己定义,枚举量可以相同.。枚举只能用于赋值运算符,不能用于算术运算。枚举量为整形,可以提升为int类型,但不能自动将int类型转换为枚举类型。
5.指针 指针是一个变量,其存储的是一个地址,而非值本身。声明时采用 int* p或者int *p,前者int*表示一个类型,一个指向int的指针,后者强调*p是一个int型的值。*运算符是解除引用,*p表示指针指向地址的值。int *p1,*p2,针对每一个指针,都需要一个*。需要注意的是,在对指针应用解除引用运算符*之前,一定先给指针确定的地址。
6.使用new分配内存 为一个数据对象(可以是结构或者基本类型)获得并指定分配内存的通用格式 typename * p =new tapename;使用new创建时内存需要用delete进行释放,delete p;此时删除的是p指向的内存,而指针p本身。
7. 使用new创建动态数组 此方法称为动态编译,在程序运行时才创建数组,更加灵活,不浪费空间,创建方式为:int * p=new int [];删除时,需要delete [] p; 这相当于释放整个数组。如果通过声明来创建数组,称为静态联编,其是在编译时就将数组大小确定,不管是否需要用到,浪费内存。需要注意的是,1.不要使用delete来释放不是new分配的内存,2.不要使用delete释放同一个内存两次。3.如果要删除数组,记得加[],4.如果删除的是实体分配内存,使用delete(不加[]).5.对空指针运用delete是安全的。
8.整数变量+1后将其值+1,指针变量+1后,增加的量等于它指向的类型的字节数,即指向下一个内存单元。
9.数组表达式*(stacks+1)等价于stacks[1],同理*(stacks+2)等价于stacks[2].
10.数组和指针的两个区别:可以修改指针的值,如pointername=pointername+1;但是数组名是常量,因此不能arrayname=arrayname+1. 。对数组运用sizeof得到的是数组的长度,对指针运用sizeof得到的是指针的长度,即使指针指向的是一个数组。
11.关于数组的地址:对数组取地址时,数组名被解释为其第一个元素的地址,但当数组名应用地址运算符时,得到的将是整个数组的地址。
12.指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身的大小决定,每一个元素都是一个指针。
13.数组指针:首先它是一个指针,它指向一个数组。
14.用new创建动态结构 将new用于成员需要两步:创建结构和访问成员。如创建一个未命名的infltable类型,并将其地址赋给指针 inflatable * ps=new inflatable;访问时不能用.运算符对成员进行访问,因为这种结构只知道地址没有名称,因此可以用->箭头成员运算符,用于指向结构的指针。另外,如果ps是指向该结构的指针,则*ps就是被指向的值-结构本身,因此可以采用(*ps).price进行访问price成员。总的来说,如果结构标识符是结构名,则采用.运算符,如果是指针 ,则采用->运算符。
15.c++管理数据内存的方式有3种,自动存储,静态存储和动态存储。在函数内部定义的常规变量使用自动存储空间,称为自动变量,通常存储于栈中。静态存储有两种办法,一是在函数外部定义,而是使用关键字static。静态变量存在于函数的整个周期,而自动变量存在于函数运行时。动态存储即new和delete提供,其管理内存称为堆。