实用性增强:
遍历数组的方式:// freach方式遍历
int array[5] = {1, 2, 5, 6, 8};
for (int i : array)
{
cout << i;
}
cout << endl;
char src[] = "hello world";
for (char temp : src)
{
if (temp == '\0')
{
break;
}
cout << temp << endl;
}
关键字的升级:
register vs volatile
C:仅能修饰局部变量,不能修饰全局变量和函数;修饰的变量不能通过“&”取地址
C++:当对register变量取地址时,会将该变量重新保存到内存中
寄存器变量,提高运行效率,省去了cpu从内存抓取数据的情况
尽可能的将变量保存在寄存器,而不是一定保存在寄存器
CPU的三大组成部分:运算器 存储器(寄存器)和控制器
volatile
防止编译器优化(将变量优化到寄存器中(寄存器存在边际效应))
auto
C语言中:auto int num=5;用处很少
C++:类型推导:根据赋值类型来推导
应用于迭代器时,可以更简洁
typedef
与宏替换进行比较(#define)
语法作用:给数据类型重命名
工程应用:更好的可读性 更好的移植性:
函数命名规则:解决函数形参的可读性(实现自注释性)
如何定义函数指针 & typedef 函数指针 ???
#include <iostream>
typedef int (*p)(int ,int);//C语言重定义函数指针的方法
using namespace std;
int sum(int a,int b)
{
int sum;
sum=a+b;
return sum;
}
#if 0
int main(int argc,char**argv)
{
p p_sum;//typedef 定义一个函数指针
p_sum=sum;
int res=p_sum(7,8);
cout<<res<<endl;
return 0;
}
#endif
using p_func=int (*)(int a,int b);//C++重定义函数指针的方法
using u_int=unsigned int;//C++重定义数据类型的方法
int main()
{
p_func p2;
p2=sum;
cout <<p2(3,4)<<endl;
u_int t=33;
cout <<t<<endl;
return 0;
}
const关键字:
在C语言中将一个变量变为只读变量:
const只能修饰变量名num;而不修饰所指向的空间———num指向的空间可变,只是不能通过变量名来修改
工程作用:修饰函数形参,保证实参在函数执行过程中不能被修改
在C++中将一个变量修饰成常量
constexpr
C++中的constexpr替代c中的#define
bool类型
bool variable =true 【只有true和false两种】
三目运算符
c语言,三目运算符的结果只能作右值
c++ 中~~~可以做左值,可以被赋值
while(【支持逗号表达式】)