#include <>与#include ""的区别:
前者常用来包含系统提供的头文件,编译器会到保存系统标准头文件的位置查找头文件;后者常用于包括程序员自己编号的头文件,用这种格式时,编译器先查找当前目录是否有指定名称的头文件,然后从标准头目录中进行查找。
函数模板:
定义格式为tmplate。如下:
#include <iostream>
using namespace std;
tmplate <typename T>
T min(T a, T b, T c)
{
if(a>b) a=b;
if(a>c) a=c;
return a;
}
用函数模板比函数重载更方便,但是它只适用于函数个数相同而类型不同的情况。
数组:
strlen()与sizeof()的区别如下:
前者是函数,在运行时才能计算,功能是返回字符串的长度。参数是字符型指针(char*),且必须是以‘\0’结尾。当数组名作为参数传入时,实际上数组已经退化为指针了。
后者是运算符,而不是函数,在编译时就计算好了,用于计算数据空间的字节数。因此,sizeof不能用来返回动态分配的内存空间的大小。sizeof常用于返回类型和静态分配的对象、结构或数组所占的空间,返回值跟对象,结构,数组所存储的内容没有关系。
指针:
存放的是地址,指向某个变量或者函数。函数指针是指向函数的指针变量。所以,函数指针首先是个指针变量,而且这个变量指向一个函数。C++在编译时,每个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,就可以用该指针变量调用函数了。
引用:
就是变量的别名,与变量共用一个存储单元,具有同一地址。声明引用时必须初始化。当参数传递的数据较大时,用引用比一般变量传递参数的效率更高,占用空间少。
另外注意,引用型参数应该在能被定义为const的情况下,尽量定义为const。