C++学习(19)

#学习自用#

当我们编译C++文件时,首先预处理器会过一遍所有带# 的语句(预编译指令符号),然后进行文本替换。

#include<iostream>
using namespace std;
#define  SQUARE(X) X*X

int main()
{
	int a = SQUARE(5);
	cout << a << endl;

	int b = SQUARE(2 + 3);
	cout << b << endl;

	cin.get();
}

这里写了一个宏来实现数的平方,注意X是参数符号标记并不是真正的传参,宏虽然看起来像函数但并不是传递参数来实现的,只是简单的文本替换,b=2+3*2+3,所以a,b的结果不相同。

宏并不适合拿来写函数,容易发生一些不容易察觉的错误,比如上面代码中b的结果,更麻烦的是宏是在预处理阶段进行的文本替换,并不能添加断点调试,这就导致宏引发的错误更难以发现。

在宏定义中不一定所有语句都得写在同一行,可以使用 \来实现多行的书写。反斜杠后面一定不能有空格!!!(有空格就是对空格的转义而不是对换行的)

auto

#include<iostream>
int main()
{
	auto a = 5;
	auto b = "odd";
	auto c =5.0f ;
	cin.get();
}

从这段代码可以看出,我们不需要特别关注类型,auto可以让变量自动对应上其赋值的类型。当变量类型比较简单时用auto会导致代码可读性下降,所以auto一般都运用在类型名过长(无须映射)和不知道类型的情景下。

array

array是静态数组,与vector不同array不能改变设定的元素个数,语法为 std::array<类型,元素个数>数组名,可以像访问数组那样访问它,array与c语言中的数组差别不大,都是储存在栈上。

#include<iostream>
#include<string>
#include<array>
using namespace std;
int main()
{
	array<int, 5>data;
	data[0] = 0;

	int dataold[5];
	dataold[0] = 0;

	cin.get();
}

相比于c风格的数组,array增加了一层调试,可检查数组是否越界,可记录数组大小,没有性能损失。

相关推荐

  1. C++学习19

    2024-06-13 23:04:03       34 阅读
  2. c++算法学习笔记 (19) 堆

    2024-06-13 23:04:03       38 阅读
  3. c++11学习笔记

    2024-06-13 23:04:03       71 阅读
  4. c++学习笔记(11

    2024-06-13 23:04:03       36 阅读
  5. C++学习-2023/12/14-C++类和对象

    2024-06-13 23:04:03       52 阅读
  6. C++学习-2023/12/13-C++类型转换

    2024-06-13 23:04:03       50 阅读
  7. C++学习-2023/12/13-C++函数上的改变

    2024-06-13 23:04:03       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-13 23:04:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-13 23:04:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-13 23:04:03       82 阅读
  4. Python语言-面向对象

    2024-06-13 23:04:03       91 阅读

热门阅读

  1. 802.11中的各种帧

    2024-06-13 23:04:03       37 阅读
  2. 雅可比矩阵奇异求解

    2024-06-13 23:04:03       35 阅读
  3. SDK version 2018.3 doesnt match hw_server version 2015.2

    2024-06-13 23:04:03       23 阅读
  4. 英伟达SSD视觉算法模型训练代码解析

    2024-06-13 23:04:03       27 阅读
  5. Stable Diffusion 3 开源发布可下载体验

    2024-06-13 23:04:03       40 阅读
  6. Python PDF转化wolrd代码怎么写

    2024-06-13 23:04:03       31 阅读
  7. 【React】在 React 组件中,怎么使用useContext

    2024-06-13 23:04:03       32 阅读
  8. Cohere reranker 一致的排序器

    2024-06-13 23:04:03       37 阅读
  9. C# —— 逻辑运算符

    2024-06-13 23:04:03       33 阅读