C语言没有提供逻辑型数据,关系表达式的值分别用数值1和0代替。
C++增加了逻辑型数据。逻辑常量只有两个,即false和true。占用一个字节大小
逻辑型变量要用类型标识符bool来定义,它的值只能是true和false之一。(因为逻辑变量由bool来定义,因此也成为布尔变量)
else总是与它上面最近的、且未配对的if配对。
如果if与else的数目不一样,为实现程序设计者的意图,可以加花括号来确定配对关系。
break语句只能用于循环语句和switch语句内,不能单独使用或用于其他语句中。
调用函数时需要一定的时间和空间的开销,C++提供了一种高效的方法,即在编译时将所调用函数的代码直接嵌入到主调函数中,而不是将流程转出去。这种嵌入到主调函数中的函数称为内置函数。
可以在声明函数和定义函数同时使用inline,也可以在其中一处使用inline,效果相同。
对函数作inline声明,只是程序设计者对编译系统提出的一个建议,并不是指令性的。
C++提供默认参数的参数:
- 如果定义在调用之前,在函数定义中给出默认值,如果定义在调用之后,在声明中给出默认值,定义可以不给出默认值
- 函数重载与默认参数结合时,不能出现二义性
C++允许用同一函数名定义多个函数,这些函数的参数个数和参数类型不同。这就是函数的重载。
函数重载要求:函数的参数类型 个数 顺序 至少有一个不同。
函数类型、函数指针类型、函数指针变量:
-
typedef void (p)(int,int);
定义一个函数类型
p *p1; 定义一个函数指针变量
-
typdef void (*p)(int,int);
定义一个函数指针类型
-
void (*f2)(int,int); 定义一个函数指针变量
#include <iostream>
using namespace std;
void test(int a, int b) {
cout << a << b << endl;
}
int main() {
//第一种调用
typedef void (p)(int, int);//定义一个函数类型
p *p1 = test;
p1(1, 2);
//第二种调用
typedef void(*p)(int, int);
p p1 = test;
p1(1, 2);
//第三种调用
void(*p)(int, int);
p = test;
p(1, 2);
system("pause");
}
数组类型、指针数组类型、数组指针变量:
C++提供函数模板,所谓函数模板,实际上是建立一个通用函数,其函数类型不具体指定,用一个虚拟的类型来代表。
定义函数模板的一般形式为:template<typename T> 或 template<class T>
函数模板只适用于函数的参数个数相同而类型不同,且函数体相同的情况。
对于有默认参数的函数,因为实参与形参的结合是从左至右顺序进行的。因此指定默认值的参数必须放在形参表列的最右端。
如果函数的定义在调用之前,应在函数定义中给出默认值,如果定义在调用之后,应该声明中给出默认值。
一个函数不能既作为重载函数,又作为有默认参数的函数。
C++提供了运算符new和delete来取代malloc和free函数。
new和delete是运算符,因此执行效率高。
new运算符使用的一般格式为:
new 类型 [初值]
用new分配数组空间时不能指定初值。
delete运算符使用的一般格式为:
delete [] 指针变量 //表示对数组空间的删除