当前位置: 代码迷 >> 综合 >> 【C++】auto关键字 + 范围for + nullptr
  详细解决方案

【C++】auto关键字 + 范围for + nullptr

热度:85   发布时间:2023-11-28 01:17:41.0

文章目录

  • 一、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;
}

image-20220116090751225


注意:

  • 在使用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 
  相关解决方案