1.函数声明时可以简写,如:

int max(int,int);

2.函数模板:

格式:

template <typename haha>
或template <class haha>
typename、class为关键字,class也是指函数而非类。
e.g.
   template <typename haha>
   haha max(haha a,haha b)
   {
       //xxxxx
   }

调用时像调用正常函数一样就行,会根据参数自行重载适合的函数类型。

3.有默认参数的函数:

int length(int l=10);
调用时,
可以length();//l=10;
也可以length(53);//l=53;

若有多个参数,则指定默认值的参数必须在最右端。

4.变量存储属性:

变量存储期指的是变量在内存中存在的周期,即时间起始。

内存中存储空间细分的话可分为5部分,即栈区、堆区、全局区、文字常量区、程序代码区。其中堆区、栈区为动态区,全局区为静态区。

a、栈区:由编译器自动分配释放,存放函数的参数值,局部变量的值等。
      b、堆区:一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
      c、全局区:全局变量和静态变量的存储是放在一块的,程序结束后由系统释放。
      d、文字常量区:常量字符串就是放在这里的。 程序结束后由系统释放。
      e、程序代码区:存放函数体的二进制代码。

e.g.

//main.cpp
int a = 0;          // 全局初始化区
char *p1;           // 全局未初始化区
main()
{
  int b;                   // 栈区
  char s[] = "abc"; // 栈区
  char *p2;            // 栈区
  char *p3 = "123456";     // "123456/0" 在常量区,p3在栈区
  static int c =0;               // 全局(静态)初始化区
 
  p1 = (char *)malloc(10);
  p2 = (char *)malloc(20); // 分配得来的10和20字节的区域就在堆区
 
  strcpy(p1, "123456");     //"123456/0" 放在常量区,编译器可能会将它
                                        //与p3所指向的"123456"优化成一个地方。
}

变量类型分为4种:auto、static、register、extern。

一般cpu要用哪个数据时,就从内存中把它取出来,包括动态和静态。但是对于有些使用频繁的数据还行速度不够,所以有了register。register就是寄存器变量,将数据存在cpu的寄存器中,而不是内存中,效率更高了。

e.g. 
register int i;

现在的编译器可以自动识别使用频繁的变量,所以一般不用register去刻意声明,了解即可。

extern只用于声明,不定义。

C/C++ 函数模板、全局变量、register、存储周期的更多相关文章

  1. [Reprint] C++函数模板与类模板实例解析

    这篇文章主要介绍了C++函数模板与类模板,需要的朋友可以参考下   本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解.具体内容如下: 泛型编程( ...

  2. JavaScript 引入方式 语言规范 语言基础 数据类型 常用方法 数组 if_else 比较运算符 for while 函数 函数的全局变量和局部变量 {Javascript学习}

    Javascript学习 JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript ...

  3. C++学习之函数模板与类模板

    泛型编程(Generic Programming)是一种编程范式,通过将类型参数化来实现在同一份代码上操作多种数据类型,泛型是一般化并可重复使用的意思.泛型编程最初诞生于C++中,目的是为了实现C++ ...

  4. thinkphp5.1 - twig模板-全局变量

    thinkphp5.1 - twig模板-全局变量我们在定义 ccs 之类的静态文件的时候,经常会使用<link rel="stylesheet" href="__ ...

  5. c++函数模板作为类的成员函数,编译报错LNK2019的解决方法

    为了使某个类的成员函数能对不同的参数进行相同的处理,需要用到函数模板,即template<typename T> void Function(). 编译时报错LNK2019 解决方法: 1 ...

  6. C++STL - 函数模板

    模板主要是为了泛型编程,做到与类型无关 模板有函数模板和类模板,本文主要整理的是函数模板 1.函数模板定义 template<typename 类型形参1,typename 类型形参2,...& ...

  7. 使用getopt_long来解析参数的小函数模板

    getopt_long原型 #define no_argument 0 #define required_argument 1 #define optional_argument 2 struct o ...

  8. C++函数重载和函数模板

    1.函数重载 这是小菜鸟写的一个例子. 函数重载应该注意以下几点: 1.1重载函数有类似的功能: 1.2只能以参数的类型(形参个数和类型)来重载函数, int max(int a,int b);flo ...

  9. 零值初始化&字符串常数作为函数模板参数

    1.在定义一个局部变量时,并希望该局部变量的初始化一个值,可以显示调用其默认构造函数,使其值为0(bool类型默认值为false). template <typename T> void ...

随机推荐

  1. (6)servlet-创建一个servlet类

    1,在项目的src目录下,右键[New]-[Servlet] 2,在弹出窗口中填写信息 Package:所在包名 Name:servlet的类名 Which method stubs would yo ...

  2. 利用http_load测试Web引擎性能

    http_load是基于linux平台的性能测试工具,它体积非常小,仅100KB.它以并行复用的方式运行,可以测试web服务器的吞吐量与负载. 一.获得http_load httpd_load的官方站 ...

  3. 洛谷P3243 [HNOI2015]菜肴制作——拓扑排序

    题目:https://www.luogu.org/problemnew/show/P3243 正向按字典序拓扑排序很容易发现是不对的,因为并不是序号小的一定先做: 但若让序号大的尽可能放在后面,则不会 ...

  4. 洛谷P3004 宝箱Treasure Chest——DP

    题目:https://www.luogu.org/problemnew/show/P3004 似乎有点博弈的意思,但其实是DP: f[i][j] 表示 i~j 的最优结果,就可以进行转移: 注意两个循 ...

  5. AppiumLibrary用户关键字

    *** Settings *** Library AppiumLibrary Library AutoItLibrary Library os *** Keywords *** xpath应该匹配次数 ...

  6. Maven的-pl -am -amd参数学习

    昨天maven的deploy任务需要只选择单个模块并且把它依赖的模块一起打包,第一时间便想到了-pl参数,然后就开始处理,但是因为之前只看了一下命令的介绍,竟然花了近半小时才完全跑通,故记录此文. 假 ...

  7. Excel VBA 入门

    一.文件格式 要使用VBA,excel文件必须保存为启用宏的工作簿,即xlsm格式. 二.启动VBA编辑器 打开工作簿后,要启动VBA编辑器,有两种方法,一是在工作表的名字上面点击右键,选择“查看代码 ...

  8. 【BZOJ3625】【CF438E】小朋友和二叉树

    题目 传送门 思路&做法 我们可以用\(v_i\)表示\(i\)在\(c\)中出现了几次, 用\(f_i\)表示权值为\(i\)的神犇树的总数, 于是 \[ f_x = \sum_{i = 0 ...

  9. bzoj 1084: [SCOI2005]最大子矩阵【dp】

    分情况讨论,m=1的时候比较简单,设f[i][j]为到i选了j个矩形,前缀和转移一下就行了 m=2,设f[i][j][k]为1行前i个,2行前j个,一共选了k个,i!=j的时候各自转移同m=1,否则转 ...

  10. 爬虫—Requests高级用法

    Requests高级用法 1.文件上传 我们知道requests可以模拟提交一些数据.假如有的网站需要上传文件,我们也可以用requests来实现. import requests files = { ...