what /why/how

这些怎么区分:

函数指针:重点在指针,表示它是一个指针,它指向的是一个函数。eg: int (*fun)();

指针函数:重点在函数,表示它是一个函数,它的返回值是指针。 eg: int*  fun();

数组指针:重点在指针,表示它是一个指针,它指向的是一个数组。int (*fun)[8];

指针数组:重点在数组,表示它是一个数组,它包含的元素是指针 itn*  fun[8];


类模板(class   template)  - 模板类(template   class) 区分:

类模板:重点在模板,表示它是一个模板,专门用于产生类的模子。

template <tempname T>

class   Vector

{

.....................................

}

使用这个Vector模板就可以产生很多的class(类),Vector <int> 、Vector <char> 、Vector <   Vector <int>   >。

模板类: 重点在类,表示的是由一个模板生成而来的类。

例子:上面的Vector <int> 、Vector <char> 、……全是模板类。

函数模板(function   template)——模板函数(template   function)

函数模板的重点是模板。表示的是一个模板,专门用来生产函数。

eg:

template <tempname T>

void   fun(T   a) 

            … 
}

在运用的时候,可以显式(explicitly)生产模板函数,fun(int) ,fun(double) , fun(shape*)。

也可以在使用的过程中由编译器进行模板参数推导,帮你隐式(implicitly)生成。

fun(1)          //隐式的生成fun(int)

func(1.2)    //隐式的生成fun(double)

func('a')    //隐式的生成fun(char)

Shape*  ps = new  ch;

fun(ps);    //隐式的生成fun(Shape*)

模板函数:重点在函数,表示的是由一个模板生成而来的函数。

面显式(explicitly)或者隐式(implicitly)生成的fun <int> 、fun <Shape*> ……都是模板函数。


从文章的讨论中,可以看到,名字是非常重要的,如果对名字的使用不恰当的话,会引起很多的麻烦和误解。有时候还是需要付出一定的代价。

转载于:https://www.cnblogs.com/wutengbiao/p/5029131.html

函数指针,指针函数,数组指针,指针数组 区分相关推荐

  1. C++ 笔记(14)— 指针(指针声明、取地址、取值、new/delete、NULL指针、指针运算、指针数组、数组指针、指针传递给函数、从函数返回指针)

    1. 声明指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指 针存储其他变量地址之前,对其进行声明. 指针变量声明的一般形式为: type * ...

  2. Go 学习笔记(13)— 指针定义、指针特点、空指针、指针数组、指向指针的指针、指针作为函数入参

    1. 复合数据类型 Go 语言基本的复合数据类型有指针.数组.切片.字典.通道.结构和接口等.格式如下: * pointerType // 指针类型, [n]elementType // 数组类型, ...

  3. 数组作为函数的参数传参时,数组名会退化为指针

    1.数组作为函数的参数传参时,数组名会退化为指针 数组作为函数的参数传参时,数组名会退化为指针,数值传参时,需要把数值的长度一起传过去,另外,sizeof()运算符包含字符串的哨兵'/0',而strl ...

  4. C++基础8【难】 回顾:数组指针,函数指针,函数指针做函数参数 C语言多态

    1,数组指针语法梳理 回顾,如何定义数组数据类型: 回顾,如何定义指针类型数组: 回顾,如何直接定义 一个指向数组类型的指针: 2,函数指针语法梳理 1)如何定义一个函数类型 2)如何定义一个函数指针 ...

  5. 【C 语言】数组 ( 多维数组做函数形参退化为指针过程 | int array[2][3] -> int array[][3] -> int (*array)[3] )

    文章目录 一.多维数组做函数形参退化为指针过程 1.使用 int array[2][3] 作函数参数 2.使用 int array[][3] 作函数参数 3.使用 int (*array)[3] 作函 ...

  6. 【C 语言】二级指针作为输入 ( 指针数组 | 将 二级指针 作为函数输入 | 抽象函数业务逻辑 )

    文章目录 一.打印 指针数组 中指针指向的字符串 二.字符串排序 三.代码示例 一.打印 指针数组 中指针指向的字符串 打印 指针数组 中指针指向的字符串 : 指针退化问题 : 传入二级指针 , 同时 ...

  7. 函数指针和函数指针数组及其应用

    1. 函数指针 先来看一个简单的例子: int a=3; void *p=&a; 这是一个基础的不能再基础的例子.相信学过指针的都能看得懂.P是一个指针,指向a.a 是一个整形变量.函数指针和 ...

  8. 指针||指针和数组||指针和函数||指针、数组、函数 案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序

    指针 指针的基本概念 指针的作用: 可以通过指针间接访问内存 内存编号是从0开始记录的,一般用十六进制数字表示 可以利用指针变量保存地址 指针变量的定义和使用 指针变量定义语法: 数据类型 * 变量名 ...

  9. 指针-指向函数指针数组的指针

    先来回忆一下, 指针数组 int *p[n]; //定义了一个存放指向int的指针的数组//先找名字p //由于结合性[]>*,先和[]结合表示是一个数组 //再和*结合表示数组里存放的是指针 ...

  10. C语言 | 编写一个使用指针的c函数,交换数组a和数组b中的对应元素

    ================================================ 博主github:https://github.com/MichaelBeechan 博主CSDN:h ...

最新文章

  1. 超越GhostNet!吊打MobileNetV3!MicroNet通过极低FLOPs实现图像识别(文末获取论文)
  2. [linux] shell脚本编程-ubuntu创建vsftpd服务
  3. shell 常用命令语句
  4. git提交后的自动化流程构建
  5. 面试官 | 线程间是如何通信的?
  6. Docker创建一个镜像
  7. ubuntu终端安装python_Ubuntu linux下安装python3(手动安装)
  8. 利用python如何进行数据挖掘
  9. 【南方者】【考证】【软考】【系统规划与管理师】论文万能模板
  10. 图像识别--利用百度API免费调用
  11. Vo Mic|旧手机不要扔,一招秒变无线麦克风
  12. Codeforces 235C. Cyclical Quest 后缀自动机
  13. Caused by: java.lang.RuntimeException: Font asset not found fonts/SYFZLTKHJW.TTF
  14. 中小型超市系统中的分类/产品属性/扩展属性的数据库设计
  15. 用串口操作手机收发短信总结
  16. 起风了数字简谱用计算机,起风了钢琴简谱-数字双手-买辣椒也用券 高橋優
  17. python语言通俗理解_慢步学习,python语言编程,来扯扯语言的学习理解
  18. 详细图解,卷帘快门(Rolling Shutter)与全局快门(Global Shutter)的区别
  19. Golang实现发送微信公众号模板消息(每日一句和天气预报)
  20. 埃森哲董事长兼首席执行官南佩德因健康原因离任

热门文章

  1. 独角兽也未能幸免,2019“阵亡”新经济公司大盘点
  2. idea中刷新项目快捷键_解决 IDEA 使用过程中让你觉得不爽的一些问题
  3. 已知旋转矩阵求角度_如何推导旋转矩阵
  4. 031_vue编程式导航
  5. 018_TemplateModel
  6. mysql limit不要1_切记!MySQL中ORDER BY与LIMIT 不要一起用,有大坑
  7. 嵌入式linux硬件成本,嵌入式Linux驱动和固件有何区别?供应商是如何用固件压缩成本的?...
  8. java css是什么_Java 之 CSS
  9. 生鲜配送小程序源码_生鲜配送小程序开发
  10. php 清除数据表中所有数据库,清除一个数据库里所有表的数据