内联
函数被频繁调用,能否有什么优化的方法?C语言中的宏和C++中的内联
宏–机制是预处理时替换
- 宏缺点:语法复杂、注意的细节多,易出错 ;没有类型安全的检查;不能调试
- 因为宏有一些缺点所以我们要知道可以代替宏:const、enum–宏常量、 inline–宏函数
- | 和 &运算顺序比+低,所以a和b分别要加括号
inline内联
内联不建议申明和定义分离,分离会导致链接错误
auto关键字
1、auto不能
- auto不能作为函数的参数
- auto不能直接用来声明数组
- auto声明多个变量时,这些变量不能是不同的类型
2、简化代码,但也一定程度牺牲了代码可读性
#include <string>
int main()
{
int a = 1;
char b = 'a';
// 通过右边赋值对象,自动推导变量类型
auto c = a;
auto d = b;
// typeid可以看变量的实际类型
cout << typeid(c).name() << endl;
cout << typeid(d).name() << endl;
return 0;
}
int main()
{
int x = 10;
auto a = &x;
auto* b = &x;
auto& c = x;
//typeid可以看变量的实际类型
cout << typeid(a).name() << endl;//int*
cout << typeid(b).name() << endl;//int*
cout << typeid(c).name() << endl;//int
}
3、访问数组的方式
以前–for循环
void TestFor()
{
int array[] = { 1, 2, 3, 4, 5 };
// C / C++98
for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)
array[i] *= 2;
for (int* p = array; p < array + sizeof(array) / sizeof(array[0]); ++p)
cout << *p << " ";
cout << endl;
}
int main()
{
TestFor();
return 0;
}
现在–范围for
void TestFor()
{
int array[] = { 1, 2, 3, 4, 5 };
// C++11 提供一种新的访问数组的方式,范围for
// 自动依次取数组中的值赋值给e,自动判断结束
//for (auto e : array)--不加引用会为随机值
for (auto& e : array)//取数组中的值依次赋值给e
{
e *= 2;//这里不加引用数组里的值不会变成二倍因为e是局部变量在这里不加引用就不会影响array
}
for (auto e : array)
{
cout << e << " ";
}
cout << endl;
}
int main()
{
TestFor();
return 0;
}
4、不能这样使用,array已经不是数组,c语言–array是指针
指针的空指针
int p = nullptr; nullptr为c++关键字*