一些常见的易于混淆的概念

一、函数指针与指针函数的区别
函数指针是指指向函数的指针变量,其本质是一个指针变量,表示的是一个指针,它指向的是一个函数。
例如:int (*pf)(int x),它的意思是pf=func,将func函数的首地址赋给指针

指针函数是指带指针的函数,本质上是一个函数,函数的返回类型是某一类型的指针。
例如:int *f(x,y),声明一个函数f(x,y),函数的返回类型是指向int的指针

二、数组指针/指针数组
数组指针就是指向数组的指针,它表示的是一个指针,它指向的是一个数组
例如:int (*pa)[8]

指针数组就是指针的数组,表示一个数组,它所包含的元素是指针
例如:int *ap[8]

三、函数模板/模板函数
函数模板是对一批模样相同的函数的说明描述,它不是一个具体的函数,是抽象的。
模板函数则是将函数模板内的“数据类型参数”具体化后得到的重载函数,是具体的。

四、类模板/模板类
类是对象的抽象,而类模板就是类的抽象,类模板与函数模板类似,将数据类型定义为参数,描述了代码类似的部分类的集合,具体化为模板类后,可以用于生成具体的对象。

五、指针常量/常量指针
指针常量是指定义的指针只能在定义的时候初始化,之后不能改变。
例如:char* const p1;int* const p2;
声明的p1、p2对象是常量,而对象的数据类型是指针,常指针的值不能改变,但是其指向的内容却可以改变。

常量指针是指指向常量的指针,因为常量指针指向的对象是常量,因此这个对象的值是不能够改变的。
例如:int const*p;const int *p;

指针常量强调的是指针的不可变性,而常量指针强调的是指针对其所指向的对象的不可变性。

你可能感兴趣的:(函数,指针,模板类,类模板)