函数模板和预处理

1.函数模板

#include <iostream>
using namespace std;
template<class T,class T2>
T mymax(T t1,T2 t2)
{
	return t1>t2?t1:t2;
}
void main()
{
	cout<<mymax(200,400.6)<<endl;
}

2.变量的存储期

变量有两种存储期,一种的静态存储期,一种的动态存储器

静态存储期:

程序运行期间系统对程序进行分配固定的空间,

动态存储器:

程序运行期间系统对程序动态分配空间和释放



上图为,提供用户使用的存储空间

静态存取区存放:全局变量    静态变量

动态存储区存放:局部变量 形参  返回值的临时变量

变量的存储方法分为静态存储和动态存储两大类。具体包含4种: 自动的(auto) 静态的(static) 寄存器的(register) 外部的(extern) 。根据变量的存储类别,可以知道变量的作用域和存储期

2.1  自动变量(auto)

用auto修饰的变量存储在动态存储区中,
auto int i=10;

auto和int位置可以调换的,默认局部变量都是auto变量,所以也可以省略掉。

auto只能修饰方法或代码块中,不能修饰全局变量

2.2静态变量(static)

这个和其他语言一样

2.3寄存器变量(register)

声明和用法和auto这些一样,它也是动态存储区中的,也不能修饰全局变量。。

唯一的区别是,普通的变量都是存放在内存的,当程序需要处理变量的数据时,cpu会从内存中取出数据,然后进行计算,最后在把计算结果存放到内存


而寄存器变量是存储在CPU的寄存器中,不必从内存中存取,提高了效率。。不过现在的系统,都做过优化,会自动把使用很频繁的变量存放到寄存器来提高效率。所以这个我们不经常用,操作系统已经做过优化了

2.4外部变量(extern)

在一个文件中使用外部变量:
#include <iostream>
using namespace std;
template<class T>
T mymax(T t1,T t2)
{
	return t1>t2?t1:t2;
}
void main()
{
	extern int a,b;
	cout<<mymax(a,b)<<endl;
}
int a=200,b=400;

这里a和b的作用域在main函数中不够,所以声明为外部变量extern才能使用

在多个文件中使用外部变量:

假设,一个程序有多个文件,但是多个文件中可能会同时用到同一个全局变量的值,那么就需要使用外部变量了,不过有了类对象后,好像这个也不常用,这是C语言面向过程化的时候才常用的

filel.cpp
extern int a,b;
int main()
{
    cout<<a<<","<<b<<end!;
    return 0;
}

file2.cpp
int as3,b=4;


3.C++预处理命令

C++预处理命令包括三种:
文件包含、宏定义、条件编译

3.1宏定义

#define PI  3.1415932

还可以这样:

#define SAFE_DELETE(p) if(p){delete (p);p=0;}

3.2文件包含

#include "file2.cpp"

3.3条件编译

#include <iostream>
using namespace std;
#define RUN //在调试程序时使之成为注释行
int main( )
{
   int x=1, y=2, z=3;
   #ifndef RUN  //本行为条件编译命令
   cout<<"x="<<x<<", y="<<y<<", z="<<z<<"\n";  
	#else
   cout<<"RUN 已定义"<<endl;
   #endif 
   cout<<"x*y*z="<<x*y*z<<endl;
}
RUN 定义过就执行else后的语句,没定义就执行else前面的cout

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值