实例代码:
#include <iostream>
using namespace std;
void func(int &ta, int &tb) {
ta = 4; //改变这个值会影响到外界
tb = 5;
}
constexpr int func1(int abc) {
return 5;
}
int main() {
//一:局部变量及初始化 C++ 11中引入大括号初始化语法
//随时用到随时定义
for (int i = 0; i < 10; i++) { //i的作用域仅仅限制在for语句内
cout << i << endl;
}
//int abc = 5; //定义的时候初始化
int abc{ 5 }; //定义的时候初始化 C++11新标准
//int abc = { 5 }; //等号在这里可以有可以没有
cout << abc << endl;
for (int i{ 0 }; i < 10; i++) { // C++11 中这样写也可以
cout << i << endl;
}
int a[] { 11,12,34 };//注意这里没有用等号, {}里包含一组数据的情形
cout << a[2] << endl; //输出:34
int def = 3.5f; //丢了0.5, 被系统截断
cout << def << endl; //输出:3
//int def{ 3.5f };//无法编译成功,系统执行了一个从浮点数到整数的转换
//二:auto C++11中赋予了 变量自动类型推断的语法含义
//auto 可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型;(声明时要赋予初值【初始化】)
//auto 自动类型推断发生在编译期间,所以使用auto不会造成程序效率降低
auto bvalue = true;//bool
auto ch = 'a'; //char
auto dv = 1.2f; //float
auto iv = 5;// int
//三:头文件防卫式声明
//#ifdef ,ifndef 条件编译
//#ifndef 标识符 //当标识符没有定义过(没有用#define定义过),则对程序段进行编译
//程序段
//#endif
//四:引用
//引用理解成:为变量起了另外一个名字,一般用&符号表示。起完别名后,这别名和变量本身我们就看成是同一个变量;
int value = 10;
int &refval = value;//value的别名就是refval,&在这里不是求地址运算符,只是起标识作用。
//定义引用的时候必须初始化,
refval = 3;
cout << value << endl; //输出:3
cout << refval << endl; //输出:3
//int &refval3 = 10;// 不可以,引用必须绑定到变量上去,绑定到对象上也可以,不能绑定到常量上去
//float &refval2 = value; // 不可以,类型要相同
int c = 13;
int d = 14;
cout << c << endl; //输出:13
cout << d << endl; //输出:14
func(c, d);
cout << c << endl; //输出:4
cout << d << endl; //输出:5
//常量:不变的量
//const关键字:表示不变的意思
const int var = 7;//一种承诺,表示这个变量的值我不会去改变(命名常量)
cout << var << endl; //输出:7
//var = 10;// 不可以,编译时报错,编译器会检查这个const 承诺
//constexpr 关键字:C++11 才引入的,它也是个常量的概念。在编译的时候求值,能提升性能
constexpr int var1 = 1;
int b = 5;
constexpr int var2 = func1(11);
cout << var2 << endl; //输出:5
system("pause");
return 0;
}