2、分配动态空间
(1)单个动态空间的分配:指针=new 类型;
(2)有初值的单个动态空间的分配:指针=new 类型(值); (3)动态一维数组空间的分配:指针=new 类型[数组大小]; (4)动态二维数组空间的分配:指针=new 类型[行标][列标]; 3、操作动态空间
(1)单个动态空间的使用:*指针;
(2)动态一维数组空间的使用:一维数组的使用; (3)动态二维数组空间的使用:一维数组的使用; 4、释放动态空间
(1)单个动态空间的释放: delete 指针; (2)动态一维数组空间的释放:delete []指针; (3)动态二维数组空间的释放:delete []指针; [试题] 链表
[考试要求](六)引用的概念★★★,引用作为函数参数的应用★★; [主要知识点] 1、引用的概念。
引用是对已存在的变量/常量起一个别名(对引用的操作就是对被引用对象的操作)。 (1)定义引用时一定要初始化,其格式为:类型 &引用=被引用对象; (2)引用与被引用对象必须一致; (3)引用符与取地址符的区别。
2、引用的作为函数的参数(引用传递),实现在不同的作用域内访问同一内存单元。 3、函数的返回值为引用。 [试题]
[2006春]选择题23 A
[2007春]填空题7 (8)8 (9)1 5 (10)27 [2007秋]选择题24 D
[考试要求](七)单向链表的处理★★★。 [主要知识点]
1、结点的运算通常是指向结点的指针和结点中成员的运算。可以通过运算符 -> 取结点的成员,如:p->data和p->next表示取指针p所指结点的值域和指针域。 2、结点p下移:p=p->next;
3、前驱结点和后继结点,若p1=p;p2=p->next;则p1是p2的前驱结点,p2是p1的后继结点。思考下列p1和p2的关系: { p1=p2;p2=p2->next;}
4、结点删除(设p2是p1的后继结点,要删除p2所指的结点)
(1)若p2所指的结点是头结点:即if(p2==head),则head=head->next;delete p2; (2)其他情况:p1->next= p2->next;delete p2; 5、结点插入
(1)在头结点之前插入结点p:p->next=head;head=p;
(2)在结点p1的后面插入结点p: p->next= p1->next; p1->next=p; 6、链表的拼接(把链表 h2拼接到链表h1的后面)
(1)找到h1的尾结点p1:p1=h1;while(p1->next!=NULL)p1=p1->next; (2)把h2接在p1后面:p1->next= h2;
7、使链表h成为循环链表(假设已找到h的尾结点p):p->next=h; 8、链表操作的关键
(1)查找要操作的结点。 (2)弄清结点间的关系。 [试题]
[2006春]填空题14 (27)new Node (28)p->next=top (29)p->next或top->next (30)delete p
[2006秋]填空题13 (27)p2->next=0 (28)p=h (29)p2->next=p (30)h=h->next [2007春]填空题13 (27)s+=p->grade (28)strcpy(p1->no,p->no) (29)p=p->next (30)p->next=head
[2007秋]填空题13 (27)p2=p2->next (28)p2!=0 (29)p2->next (30)p->next=0
第四部分 函数
[考试要求]一、函数的定义及调用★★★。 [主要知识点] 1、函数的定义 (1)定义格式
函数类型 函数名(形参) { 函数体 } (2)定义时注意
①函数名是一个合法的标识符;
②每个形参都必须有类型和名称,参数之间用“,”分隔; ③缺省参数必须放在最右边; ④形参是数组时,可省略其大小。 [试题]
[2007秋]选择题26 B 2、函数的调用
(1)调用语句: 函数名(实参) (2)调用时注意:
①函数和参数都没有类型;
②无值型函数的调用是独立的语句,有值型函数的调用通常是其他语句的一部分; ③实参与形参的个数必须相同,类型必须一致。
④若调用在前,定义在后必须对函数进行原型说明,说明语句格式为: 函数类型 函数名(形参); 如:
int a[10]={?},n=10;
void func(int t[],int n);//原型说明 func(a,n); //函数调用 void func(int t[],int n) //函数定义
{…}
[试题]
[2007春]选择题23 C [2007秋]选择题22 B
[考试要求]二、return语句和函数返回值★★★。 [主要知识点]
1、函数类型应与函数体中返回值的类型一致,特别是void型函数,其return后面不能有数据,甚至可以没有return;而有值型函数,return后面一定要有数据。 2、函数执行到return语句时退出函数运行。 [试题]
[2006秋]选择题21 C [2006秋]填空题6 (6)wishes buses (7)toys navies (8)quizzes computer [考试要求]三、参数的三种传递方式:值传递、地址传递和引用传递。★★★ [主要知识点]
函数参数的传递是指将一些数据从函数的外部通过参数传给函数内部进行处理,函数有三种传递方式:值传递、地址传递和引用传递。通过返回值只能得到一个处理结果,要把多个处理结果带回来,可以用指针和引用类型参数进行数据传递。
1、函数的值传递:函数形参与实参之间传递的是数据的值,如整型、实型、字符型、结构体类型、类类型、数组元素等数据。
2、引用传递:引用类型变量作为函数的参数时,可以实现在不同的作用域内访问同一内存单元。引用还可以作为函数的类型。
3、地址传递:将一个地址传送到函数中,同时地址对应的内存空间中的数据也传递给了函数。在该函数中既可以操作地址,也可以操作内存空间的数据。
4、三种传递方式的形参和实参。形参:在定义函数时的参数,由类型和变量名组成,其作用域为函数。实参:在调用函数时的实参,只有名称没有类型,可以是常量、变量或表达式,必须有确定的值。设有:
int a=10,b[5]={1,2,3,4,5},c[4][5]={1,2,3,4,5}; 传递方式 形参 实参 处理结果 值传递 类型 名称 int n 名称(表达式)
a、b[1]、c[1][2] 对实参没有影响 引用传递 类型 &名称 int &n 同上 肯定影响实参 地址传递 类型 *名称、类型 数组 int *n、int n[] 普通地址
&a、b、c[2] 对指针所指的值(*n、*(*(p+i)+j)操作将影响实参,而对指针(n、p)操作不影响实参 类型 (*名称)[列数] int (*p)[5] 行地址 c、p2+2
注:数组作参数时,通常要增加一个参数传递一维数组的大小或二维数组的行数。 [试题]
[2006春]填空题4 (4)指针或地址
[2006春]填空题12 (19)return1 (20)int&f (21)n/=10 (22)f=0
[2006秋]填空题12 (23)const char*s,int a[] (24)a[i]+b[i[+carry (25)sum[i]-10或sum[i] (26)i=N-1
[2007春]填空题6 (6)x=5,y=8 (7)z=34
[2007春]填空题9 (13)113 (14)228 (15)229 [2007秋]填空题11 (19)’\\0’ (20)n%2+’0’ (21)strcmp(s1,q)==0 (22)func(n,s)
[考试要求]四、递归函数的定义及调用。★★★ [主要知识点]
1、定义的基本格式 (1)有值型函数 if(递归条件)return 定值; else return 递归公式; (2)无值型函数 if(递归条件)return; else 递归公式; 2、调用过程
(1)直接递归:在函数中调用自身函数; (2)间接递归:在两个函数间来回调用。 [试题]
[2006春]填空题7 (8)80 (9)160 (10)320 [2006秋]填空题7 (9)0 (10)01357 (11)86420 [2007春]填空题8 (11)67 (12)It’s index is:4 [2007秋]填空题7 (10)1 (11)120 [考试要求]五、函数的重载。★★ [主要知识点]
同名不同参(类型、个数)的函数,仅仅返回值不同不能构成重载关系。 [试题]
[2006春]选择题26 D [2007秋]填空题1 (1)类型
第五部分 C++的编译预处理 一、编译预处理的概念和特点。 [主要知识点]
1、编译预处理是指在编译源程序之前,系统对源程序加工处理。 2、编译预处理有三种形式:文件包含、宏定义和条件编译。 3、编译预处理的特点:以#开头,以回车符结束,占单独一行。 [考试要求]二、宏定义与宏调用,无参宏与有参宏的应用。★★ [主要知识点] 1、宏定义
(1)无参宏的定义格式 #define 宏名 宏内容 (2)有参宏的定义格式 #define 宏名(参数) 宏内容 2、定义时,注意:
(1)宏定义以回车符结束,而不是“;”; (2)宏名与宏内容之间用空格分隔; (3)宏的参数没有类型。
(4)宏名与参数之间不能有空格; 3、宏调用
(1)无参宏用宏内容代替程序中的宏名; (2)有参宏用实参代替宏内容中的参数;
(3)仅仅是字符串的替换,调用过程中不计算。 [试题]
[2007秋]填空题3 (3)15 (4)2 [2006秋]填空题4 (4)20 三、包含文件的概念。
第六部分 对象与类
[考试要求]一、对象和类的基本概念。★★★ [主要知识点]
1、对象:类的实例,相当于变量。 2、类:对象的抽象,相当于类型。
3、面向对象程序设计的特性:封装性(隐藏性)、继承性和多态性。 4、类与结构体唯一区别是类的缺省访问权限是私有的,而结构体的缺省访问权限是公有的。 [试题]
[2007春]填空题2 (2)多态性 二、数据成员和成员函数。
[考试要求](一)区分公有、私有和保护成员;★ [主要知识点]
1、公有成员:在任何地方均可直接访问。 2、私有成员:只能在类中和友元中直接访问。
3、保护成员:只能在类中、派生类中或友元中直接访问。 [考试要求](二)成员函数的重载;★ [主要知识点]
1、与普通函数相似,只有有参数就可以重载。
2、类体中定义的成员函数是内联函数,类中说明、外类定义的成员函数不是内联函数。 [考试要求](三)this指针的概念。★★ [主要知识点]
1、调用普通成员函数时,指向当前对象的指针。 2、友元函数、静态成员函数没有this指针。 [试题]
[2006秋]填空题1 (1)this指针 [2007春]填空题5 (5)this [2007秋]选择题29 (5)A [考试要求](四)静态成员。★ [主要知识点]
1、静态数据成员:同一类的所有对象共享,需类中说明、类外定义。 2、静态成员函数:直接使用静态成员,通过对象名使用非静态成员。