文章目录
- 一、auto关键字
- 二、范围for
- 三、nullptr
一、auto关键字
早期auto修饰的变量有自动存储器功能,但其他int之类的的类型也有此功能(C++98)
所以在C++11中 ,auto能自动识别变量的类型
#include <iostream>
using namespace std;auto num()
{
return 1;
}int main()
{
auto x = 1;auto y = 'a';auto z = num();auto& a = x;auto* b = &x;//指针可以省略*,但引用不能省略auto c = &x;cout << typeid(x).name() << endl;cout << typeid(y).name() << endl;cout << typeid(z).name() << endl;cout << typeid(a).name() << endl;cout << typeid(b).name() << endl;cout << typeid(c).name() << endl;return 0;
}
注意:
-
在使用auto时候,一定要初始化
-
编译器在编译期会将auto替换为变量实际的类型
-
当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错
-
auto不能作为形参且auto也不能识别数组类型
二、范围for
类似与python中for循环的使用,是一种新型的语法
迭代的范围必须是确定的,比如数组的大小应该是能确定的
#include <iostream>
using namespace std;
int main()
{
int arr[5] = {
1, 2, 3, 4, 5 };//for (int i : arr)为了防止再次创建变量,改用引用for (auto& i : arr){
cout << i << endl;}return 0;
}
三、nullptr
//c++98意思相同 都为0
int* p1 = NULL;
int* p2 = 0;
//C++11 这里仅仅表示空指针的含义
int* p3 = nullptr