cpp文件
project3
#include<iostream>
#include"head1.h"
#include"head2.h"
using namespace std;
//void func(int& ta, int& tb)//注意形参是 引用类型
//{
// ta = 4;//改变这个值会影响到外界
// tb = 5;
//}
//constexpr int func() {
//
// return 5;
//}
int main() {
//一:局部变量初始化
//随时用到随时定义
//for (int i = 0; i < 10; i++)//i的作用域仅仅限制在for语句内
// std::cout << i << std::endl;
// int abc=5; 定义的时候初始化
//int abc={ 5 };//等号在这里可以没有
cout << abc << endl;
for (int i{0}; i < 10; i++)
std::cout << i << std::endl;
//int a[]{ 11,12,34 };//注意这里没有用等号 {}里包含一组数据的情形
//cout << a[2] << endl;
int abc = 3.5f;//丢了.5,被系统截断
//int abc{ 3.5f };//无法编译成功,系统执行了一个浮点数到整数的转换。
二:auto:变量的自动类型推断
auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型;(声明时候赋初值[初始化])
auto自动类型推断发生在编译期间。使用auto不会造成程序效率降低
//auto bvalue = true; //bool
//auto ch = 'a'; //char
//auto dv = 1.2f;
//auto iv = 5;
//三:头文件防卫式声明
//cout << g_globalh1 << endl;
//cout << g_globalh2 << endl;
//#ifedf,ifndef 条件编译
//#ifndef 标识符 //当标识符没有被定义过(没有用#define定义过),则对程序段进行编译。
//程序段
//endif
//四:引用
//引用理解成:为变量起来另外一个名字,一边用&符号表示。起完别名后,这别名和变量本身我们就看成同一个变量;
//int value = 10;
//int &refval = value; //value的别名就是refval, &在这里不是求地址运算符,只是起标识作用。
// //定义引用,并不额外占用内存,或理解成,引用和原变量占用同一内存。
// //定义引用的时候必须初始化,不然你给谁起别名
//refval = 3;
//cout << value << endl;
//cout << refval << endl;
//int &refval2;
//int& refval3 = 10;//引用必须绑定到变量上去,绑定到对象上也可以,不能绑定到常量上去。
//float & refval = value; //不可以,类型要相同。
//int a = 3;
//int& b = a;//引用,注意&符号在=左边。
//int* p = &a;//注意&符号在=右边。
/*int a = 13;
int b = 14;
cout << a << endl;
cout << b << endl;
func(a, b);
cout << a << endl;
cout << b << endl;*/
//五.常量:不变的量
//c中指13,24.5
//const:表示不变的意思
//const int var = 7;//一种承诺,表示承诺这个变量的值我不会去改变(命名常量)。
var = 15; 编译时报错,编译器会检查这个const承诺。
//int& var2 = (int&)var;
//var2 = 18;
//cout << var << endl;//7
//cout << var2<< endl;//18
//constexpr 关键字:c++11才引入的,它也是常量的概念,在编译的时候求值,肯定能提升性能。
/*constexpr int var = 1;
int b = 5;
constexpr int var2 = func();
*/
constexpr int var = 3;
cout << var << endl;
int& var2 = (int&)var;
var2 = 5;
cout << var2 << endl;
cout << var << endl;
if (var == var2)
cout << "same" << endl;
return 0;
}
头文件
head1
#ifndef __HEAD1__H__
#define __HEAD1__H__
int g_globalh1 = 8;
#endif
head2
#ifndef __HEAD2__H__
#define __HEAD2__H__
#include"head1.h"
int g_globalh2 = 5;
#endif