c++ 函数模板、全局变量、register、存储周期
来源:互联网 发布:淘宝网家居小饰品 编辑:程序博客网 时间:2024/06/11 03:38
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++ 函数模板、全局变量、register、存储周期
- C语言中局部变量和全局变量变量的存储类别(static,extern,auto,register)
- C语言中局部变量和全局变量变量的存储类别(static,extern,auto,register)
- C语言中局部变量和全局变量的存储类别(static,extern,auto,register)
- c语言变量的存储方式(auto,register,static,extern)及作用域(局部变量/全局变量)详解
- c语言中static extern register以及全局变量的细节
- C变量(auto、static、register、extern)函数(内部、外部)与存储
- c语言学习笔记---存储类型auo,register,extern,static
- c语言auto、static、extern、register、volatile存储的理解
- 局部变量与全局变量&变量的存储方式和生存周期
- c 语言 : 局部变量 、全局变量、static变量 register变量 总结(更新)
- C/C++:调用函数来初始化全局变量
- 【c/c++】函数模板和模板函数
- C语言之变量的存储方式和生存周期
- 【C++】基础知识—内联(置)函数及register关键字
- 【2017.9.29】register、宏定义、fork函数、C源程序
- javer学c++: 全局函数, 全局变量
- c语言全局变量的忠告 c语言存储类说明符
- 管理感言_人员培养看人品
- 机房合作——总结
- ZigBee 网络层
- 使用 Canvas 的Xfermode 实现 ImageView 圆形图片的实际步骤
- 3.2 MD的设计和确认
- c++ 函数模板、全局变量、register、存储周期
- 基础知识(1)
- 预处理相关
- Http协议知识点~servlet
- Linux——Ubuntu安装Fcitx以及Fcitx输入中文不显示候选词框的解决办法
- 用两个栈实现队列
- 1013: [JSOI2008]球形空间产生器sphere(高斯消元)
- YUV格式分析详解
- Linux 多线程pthread_join(tid)返回值为22原因.