C++ 局部变量及初始化 auto 头文件防卫式声明 引用 常量

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 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值