c++的学习之路:4、入门(3)

简介: c++的学习之路:4、入门(3)

一、auto

这个关键字是c++提出的,可以自动识别变量的类型,可以看出下方图片,auto自动识别变量类型,a是指针就识别出了指针,a就是指针类型的,b和a一样,但是在auto后面接上*就只可以是指针类型的,同理接上&后就只能是引用了,但是要注意这个关键字后面需要有初始化的变量,不能作为函数的形参和初始化数组。

二、for

这个是c++在c语言的基础上改编而来的,直接上代码对比吧,如下图这个for就可以配合上面说的auto使用,可以直接用:分割打印,不需要和传统的for一样使用,但是需要注意的是这个for循环迭代的范围必须是确定的 对于数组而言,就是数组中第一个元素和最后一个元素的范围;对于类而言,应该提供 begin和end的方法,begin和end就是for循环迭代的范围。

三、指针空值

指针空值这个就是在c++创建时有点小BUG就是NULL是0,就是他不是一个指针的值了,在函数重载时匹配的是0,不是指针了,而这时在2011年nullptr作为补丁引入,区别如下图特别明显。

四、代码

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
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;
//  return 0;
//}
 
//int main()
//{
//  int arr[] = { 1,2,4,4,56,2,78,2 };
//  for (int i = 0; i < sizeof(arr) / sizeof(int); i++)
//  {
//    cout << arr[i] << " ";
//  }
//  cout << endl;
//  for (auto j:arr)
//  {
//    cout << j << " ";
//  }
//  cout << endl;
//  return 0;
//}
 
void test(int)
{
  cout << "test(int)" << endl;
}
void test(int*)
{
  cout << "test(int*)" << endl;
}
int main()
{
  test(0);
  test(NULL);
  test(nullptr);
  return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
 
//int main()
//{
//  int a = 0;
//  int& b = a;
//  int& c = b;
//  int& d = a;
//  cout << &a << endl;
//  cout << &b << endl;
//  cout << &c << endl;
//  cout << &d << endl;
//  return 0;
//}
 
//int& ly(int a,int b)
//{
//  static int c;
//    c= a + b;
//  return c;
//}
//
//int main()
//{
//  int ret = ly(1, 2);
//  cout << ret << endl;
//  return 0;
//}
//#include <time.h>
//struct A { int a[10000]; };
//void test1(A a) {}
//void test2(A& a) {}
//void test3()
//{
//  A a;
//  size_t begin1 = clock();
//  for (size_t i = 0; i < 100000; ++i)
//    test1(a);
//  size_t end1 = clock();
//  size_t begin2 = clock();
//  for (size_t i = 0; i < 100000; ++i)
//    test2(a);
//  size_t end2 = clock();
//  cout << end1 - begin1 << endl;
//  cout << end2 - begin2 << endl;
//}
//
//int main()
//{
//  test3();
//  return 0;
//}
 
inline int ADD(int a, int b)
{
  return a + b;
}
 
inline int ADD1(int a, int b, int c)
{
  c = a + b;
  a = a + b;
  b = a + b;
  c = a + b;
  a = a + b;
  b = a + b;
  c = a + b;
  a = a + b;
  b = a + b;
  c = a + b;
  a = a + b;
  b = a + b;
  c = a + b;
  a = a + b;
  b = a + b;
  c = a + b;
  a = a + b;
  c = a + b;
  b = a + b;
  return c;
}
int main()
{
  int ret = ADD(1, 3);
  int ret1 = ADD1(1, 3,2);
  return 0;
}

五、思维导图


目录
相关文章
|
1天前
|
编译器 开发工具 C语言
配置C++的学习环境
这篇教程介绍了学习C++语言所需的环境配置和软件选择。首先,你需要一个文本编辑器(如Visual Studio Code、Visual Studio、Vim、Emacs或Eclipse)和一个C++编译器(如GCC)。在不同操作系统上安装GCC的方法包括:在Linux或UNIX上使用命令行检查或安装GCC,在Mac OS X上通过Apple的Xcode,而在Windows上则需要安装MinGW。教程还提供了使用Visual Studio创建和编译C++程序的步骤。最后,文章简述了g++编译器的使用及其常用命令选项。
7 0
|
4天前
|
存储 IDE 编译器
从零开始学C++:编程新手的入门指南
这篇文稿是C++入门指南,适合编程新手。内容涵盖了C++的基础知识,包括C++的概述(一种面向对象、高效且灵活的编程语言),编程环境的搭建(推荐使用IDE如Visual Studio或Code::Blocks),基础语法(变量、数据类型、控制结构和函数)以及面向对象编程基础(类、对象、继承和多态)。通过学习,初学者可逐步掌握C++编程技能,并鼓励进一步探索C++的高级特性。
|
7天前
|
存储 安全 编译器
【C++】C++入门(下)
【C++】C++入门(下)
|
7天前
|
编译器 Linux C语言
【C++】C++入门(上)
【C++】C++入门(上)
|
7天前
|
算法 编译器 C语言
从C语言到C++⑩(第四章_模板初阶+STL简介)如何学习STL(下)
从C语言到C++⑩(第四章_模板初阶+STL简介)如何学习STL
13 0
|
7天前
|
编译器 C语言 C++
从C语言到C++⑩(第四章_模板初阶+STL简介)如何学习STL(上)
从C语言到C++⑩(第四章_模板初阶+STL简介)如何学习STL
9 0
|
7天前
|
编译器 C语言 C++
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr(下)
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr
14 0
|
7天前
|
存储 安全 编译器
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr(上)
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr
16 0
|
7天前
|
存储 安全 编译器
从C语言到C++②(第一章_C++入门_中篇)缺省参数+函数重载+引用(下)
从C语言到C++②(第一章_C++入门_中篇)缺省参数+函数重载+引用
13 0
|
7天前
|
存储 编译器 C语言
从C语言到C++②(第一章_C++入门_中篇)缺省参数+函数重载+引用(中)
从C语言到C++②(第一章_C++入门_中篇)缺省参数+函数重载+引用
16 0