auto关键字
auto可以自动识别类型,根据右边自动识别类型
警告:
1.auto不能做函数的参数
2.auto不能定义数组
3.auto使用的时候不能独立定义,必须给值
即auto a=2;这样是不合理的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| int main() { const int a = 0; int b = 0; auto c = &a; auto d = 'a'; auto k = 1.1;
cout << typeid(c).name() << endl; cout << typeid(d).name() << endl; cout << typeid(k).name() << endl; return 0; }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| int main() { const double m = 1.1; int x = 10; auto a = &x; auto* b = &x; auto& d = m; const auto y = x; auto& c = x; cout << typeid(a).name() << endl; cout << typeid(b).name() << endl; cout << typeid(d).name() << endl; return 0; }
|
auto的应用
范围for
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| int main() { int array[5] = { 1,2,3,4,5 }; for (int i = 0; i < sizeof(array)/sizeof(int); i++) { cout << array[i] << endl; }
for (auto e:array) { cout << e << endl; }
for (auto e : array) { e++; } for (auto& e : array) { e++; }
TESTFOR(array);
return 0; }
|
nullptr
因为c++里面NULL既可以代表空指针,也可以代表0,如果传NULL的话就可能有歧义,所以我们就专门用nullptr来代表c++里面的空指针