【C++】基础知识点回顾 下:auto关键字、范围内的for循环

简介: 【C++】基础知识点回顾 下:auto关键字、范围内的for循环

前言

前两篇文章,我们分别复习了这些知识点

命名空间与输入输出

函数重载、引用和内联函数

今天,我们来学习auto关键字、范围内的for循环

auto关键字

定义

C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得

补充知识点:typeid

在C++中,typeid是一个运算符,用于获取表达式的类型信息。当你调用typeid(d).name() 时,它将返回一个表示表达式的类型的字符串。这个字符串通常是编译器特定的,可能不易于阅读,但可以用于调试或其他目的。

要使用typeid,你需要包含头文件<typeinfo>。

例子:

#include<iostream>
#include<typeinfo>
using namespace std;
int main()
{
  int a = 0;
  char c = 'a';
  cout << typeid(a).name() << endl;
  cout << typeid(c).name() << endl;
  return 0;
}

运行结果:

学习过运算符typeid之后,我们来继续学习auto

上面提到了,auto会自动推导变量的类型,下面给出一段代码,方便大家理解

#include<iostream>
#include<typeinfo>
using namespace std;
int XX()
{
  return 1;
}
int main()
{
  auto i = 1;
  auto c = 'c';
  int a = 10;
  auto b = a;
  auto x = XX();
  cout << typeid(i).name() << endl;
  cout << typeid(c).name() << endl;
  cout << typeid(b).name() << endl;
  cout << typeid(x).name() << endl;
  return 0;
}

运行结果:

通过上面这段代码,我们可以知道,auto可以自动推导元素的类型

详细规则

变量初始化

1.使用auto时,必须对其修饰的变量进行初始化,不然编译器无法得知该变量是什么类型,会报错

auto与指针和引用

2.auto和指针以及引用结合使用

需要注意的是:

auto和指针结合使用的时候,*可写可不写

auto和引用结合使用的时候,&必须写

下面给出一段示例代码

#include<iostream>
#include<typeinfo>
using namespace std;
int main()
{
  int x = 10;
  auto a = &x;
  auto* b = &x;
  auto& c = x;
  cout << typeid(a).name() << endl;
  cout << typeid(b).name() << endl;
  cout << typeid(c).name() << endl;
  *a = 20;
  cout << x << endl;
  *b = 30;
  cout << x << endl;
  c = 40;
  cout << x << endl;
  return 0;
}

运行结果:

一次定义多个变量

在同一行定义多个变量的时候,要注意:这些变量的类型都必须相同

不然程序会报错

下面给出一个例子:

#include<iostream>
using namespace std;
int main()
{
  auto a = 1, b = 2, c = 3;
  return 0;
}

auto不能做的

auto定义的变量不能作为函数的参数

auto不能直接定义数组

范围内的for循环

定义

在C++11中,引入了一种新的for循环,这种循环是在一定的范围内直接进行循环

语法格式

for (element_type variable : container)
{
}

element_type是要便利的容器内元素的类型

variable 是变量名称,类似于给容器内单个元素进行命名

container是要遍历的容器的名称

给出一个例子:

#include<iostream>
using namespace std;
int main()
{
  int arr[] = { 1,2,3,4,5 };
  for (int num : arr)
  {
    cout << num << "  ";
  }
  cout << endl << "-------------" << endl;
  for (int xx : arr)
  {
    cout << xx << "  ";
  }
  return 0;
}

运行结果:

nullptr

在C++11中nullptr作为关键字引入,表示空指针,

在需要用到空指针的地方,建议用nullptr而不是null

在此不多做解释

结语

关于auto关键字、范围内的for循环的学习和介绍到这里就结束了,希望对大家有帮助,我们下次见~



相关文章
|
1月前
|
存储 安全 编译器
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值(一)
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值
|
1月前
|
程序员 C++
C++编程:While与For循环的流程控制全解析
总结而言,`while`循环和 `for`循环各有千秋,它们在C++编程中扮演着重要的角色。选择哪一种循环结构应根据具体的应用场景、循环逻辑的复杂性以及个人的编程风格偏好来决定。理解这些循环结构的内在机制和它们之间的差异,对于编写高效、易于维护的代码至关重要。
51 1
|
2月前
|
安全 程序员 编译器
C++ 11新特性之auto和decltype
C++ 11新特性之auto和decltype
38 3
|
1月前
|
存储 编译器 程序员
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值(二)
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值
|
3月前
|
存储 安全 编译器
C++入门 | auto关键字、范围for、指针空值nullptr
C++入门 | auto关键字、范围for、指针空值nullptr
65 4
|
3月前
|
存储 程序员 C++
【C++小知识】基于范围的for循环(C++11)
【C++小知识】基于范围的for循环(C++11)
|
3月前
|
存储 编译器 C++
【C++关键字】auto的使用(C++11)
【C++关键字】auto的使用(C++11)
|
4月前
|
存储 编译器 C++
C++从遗忘到入门问题之float、double 和 long double 之间的主要区别是什么
C++从遗忘到入门问题之float、double 和 long double 之间的主要区别是什么
|
6天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
29 4
|
7天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
25 4