(1)typedef用法:

typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。

//1、typedef的最简单使用
typedef long byte_4;//给已知数据类型long起个新名字,叫byte_4。
//2、typedef与结构结合使用
typedef struct tagMyStruct
{
int iNum;
long lLength;
}MyStruct;//这语句实际上完成两个操作:1),2);
//1) 定义一个新的结构类型
struct tagMyStruct
{
int iNum;
long lLength;
};
//分析:tagMyStruct称为“tag”,即“标签”,实际上是一个临时名字,struct关键字和tagMyStruct一起,构成了这个结构类型,不论是否有typedef,这个结构都存在。
//我们可以用struct tagMyStruct varName来定义变量,但要注意,使用tagMyStruct varName来定义变量是不对的,因为struct 和tagMyStruct合在一起才能表示一个结构类型。
//2) typedef为这个新的结构起了一个名字,叫MyStruct。
typedef struct tagMyStruct MyStruct;
因此,MyStruct实际上相当于struct tagMyStruct,我们可以使用MyStruct varName来定义变量。

(2)函数模板与模板函数

这期间有涉及到函数模板与模板函数,类模板与模板类的概念 (类似于类与类对象的区别)
注意:模板类的函数声明和实现必须都在头文件中完成,不能像普通类那样声明在.h文件中,实现在.cpp文件中。

1、函数模板和模板函数

函数模板:函数模板的重点是模板。表示的是一个模板,专门用来生产函数。
template <typename T> 
void fun(T a)

}

模板函数:是函数模板的实例化,是一个函数。
fun(7);//隐式生成fun <int> 
fun(3.9);//隐式生成fun <double> 
fun(‘b’);//隐式生成fun <char> 
Shape* ps   =   new  Cirlcle; 
fun(ps);//隐式生成fun <Shape*>

2、类模板和模板类

类模板:类模板的重点是模板。表示的是一个模板,专门用于产生类的模子。
template <typename T> 
class Vector 

};

模板类:类模板的实例化,是一个包含具体数据类型的类

函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定。即函数模板允许隐式调用和显式调用而类模板只能显示调用。

C语言小知识:typedef\函数模板\相关推荐

  1. C语言小知识---printf()函数

      说起printf()函数,写代码的同学肯定都很熟悉,这是C语言中标准的打印函数,在调试代码或者信息输出的时候会经常用到. 其中printf函数的转换说明如下: 转换说明修饰符 printf()中的 ...

  2. C语言小知识---printf()函数转换符的意义

      printf()函数大家已经很熟悉了,它的转换符在打印数据的时候也会经常使用,比如%c,%d,%f等.那么为什么打印的时候一定需要转换符呢?系统难道不能自动识别吗?转换符存在的意义又是什么?    ...

  3. 纸上得来终觉浅(c语言小知识总结)

    纸上得来终觉浅(c语言小知识总结) 1.数组的初始定义 对于一个初始定义的数组,内部的值是随机的,若用{}(哪怕其中没有元素)也会让数组内元素初始化,默认为0. 若是用循环语句进行赋值,在一个长度为2 ...

  4. eem二级c语言题库哪种比较好,c语言小知识,供初学者参考

    1 用预处理指令 define 声明一个常数 用以表明 1 年中有多少秒 忽略闰年问题 define SECONDS PER YEAR 60 60 24 365 UL 2 写一个 标准 宏 MIN 这 ...

  5. C++ TGP 模板基础知识--01函数模板

    基本范例 模板的定义是以template关键字开头 类型模板参数T前面用typename来修饰,所以遇到typename就知道其后面跟的是一个类型,typename可以用class取代 类型模板参数T ...

  6. C语言宏定义制作函数模板

    一.介绍 当做协议栈或者批量化函数的时候,内容框架是固定的,如果要写1000个10000个函数确实手敲比较麻烦,一种是用工具批量产生这些函数,另一种就是宏定义,这里给出宏定义解决的方法,利用宏定义制作 ...

  7. c语言函数编写格式,在c语言中如何实现函数模板?

    如果要写个函数支持多种数据类型,首先想到的就是C++的模板了,但是有时候只能用C语言,比如在linux内核开发中,为了减少代码量,或者是某面试官的要求- 考虑了一阵子后,就想到了qsort上.qsor ...

  8. C语言小知识---递归函数的使用

      C语言允许函数自身调用自身,这种调用就被称为递归.好多人刚开始学习递归的时候,往往被一层层嵌套调用搞糊涂了,搞不清楚到底是怎么调用的?现在就通过一个小例子来演示一下,递归调用时,函数是如何运行的. ...

  9. C语言小知识---为什么要使用指针

      刚开始学习C语言的时候,感觉最难理解的就是指针,什么指针变量,变量指针,指向指针的变量,指向变量的指针?一堆概念,搞得人云里雾里的,今天不讨论这些概念的问题,从最底层来分析C语言中为什么要使用指针 ...

最新文章

  1. antd Form.Item 中如何获取到Select的label值
  2. 让SEQUENCE记录不变的信息【RECORD STATIC NUMBER IN SEQUENCE】
  3. 收发电子邮件属于计算机在方面的应用,计算机应用基础复习题(供参考).doc
  4. QML 信号和处理程序事件系统
  5. css表格文字超数量就竖排_求助!!一个非常棘手的问题。就是文字竖排显示的问题...
  6. Linux操作系统基础解析之(五)——grep命令家族及正则表达式初识
  7. 中间的数(若已经排好序)
  8. 计算机操作系统(7):进程的基本概念
  9. 数据库加一列,cursor:pointer
  10. ubuntu 串口调试工具推荐_谈一谈单片机开发的几种调试方案
  11. LdCms.NetCore轻量级的网站内容管理系统
  12. [转]VI/VIM的键盘图
  13. 机智云产品、功能、服务一览表
  14. 图标字体化 android,Android 优化 图标文字 iconfont
  15. java的睡眠方式有几种_java的几种定时任务
  16. 【组合数学】组合恒等式 ( 八个组合恒等式回顾 | 组合恒等式 积 1 | 证明 | 使用场景 | 求组合数通用方法 )
  17. IDEA代码格式化快捷键
  18. 扫雷源代码(HTML)
  19. 机器学习中矩阵求导法则
  20. Overlay 网络 VXLAN 技术解析

热门文章

  1. CentOS7下启动Nginx出现Failed to start nginx.service:unit not found
  2. OPPO海外官方调试ID
  3. ValueError: not enough values to unpack (expected 2, got 1)
  4. Android中设置控件可见与不可见详解
  5. 导入第三方工程报错的处理方法
  6. Web Service 安全性解决方案(SOAP篇)
  7. C#实现有向无环图(DAG)拓扑排序
  8. 周一02.3运行python程序的两种方式
  9. Object.keys方法之详解
  10. 目标反射回波检测算法及其FPGA实现 之一:算法概述